src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h
changeset 3 41300fa6a67c
parent 0 1918ee327afb
child 30 5dc02b23752f
--- a/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h	Tue Jan 26 12:42:25 2010 +0200
+++ b/src/3rdparty/webkit/JavaScriptCore/jit/ExecutableAllocator.h	Tue Feb 02 00:43:10 2010 +0200
@@ -189,6 +189,22 @@
         sys_dcache_flush(code, size);
         sys_icache_invalidate(code, size);
     }
+#elif PLATFORM(ARM_THUMB2) && PLATFORM(LINUX)
+    static void cacheFlush(void* code, size_t size)
+    {
+        asm volatile (
+            "push    {r7}\n"
+            "mov     r0, %0\n"
+            "mov     r1, %1\n"
+            "movw    r7, #0x2\n"
+            "movt    r7, #0xf\n"
+            "movs    r2, #0x0\n"
+            "svc     0x0\n"
+            "pop     {r7}\n"
+            :
+            : "r" (code), "r" (reinterpret_cast<char*>(code) + size)
+            : "r0", "r1", "r2");
+    }
 #elif PLATFORM(SYMBIAN)
     static void cacheFlush(void* code, size_t size)
     {
@@ -208,7 +224,7 @@
             "pop     {r7}\n"
             :
             : "r" (code), "r" (reinterpret_cast<char*>(code) + size)
-            : "r0", "r1");
+            : "r0", "r1", "r2");
     }
 #else
     #error "The cacheFlush support is missing on this platform."