diff options
Diffstat (limited to 'packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch')
-rw-r--r-- | packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch b/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch new file mode 100644 index 0000000000..813cb683f6 --- /dev/null +++ b/packages/cacao/files/cacao-0.98+hg-arm-cacheflush-workaround.patch @@ -0,0 +1,50 @@ +Index: cacao-0.98+hg7750/src/vm/jit/arm/asmpart.S +=================================================================== +--- cacao-0.98+hg7750.orig/src/vm/jit/arm/asmpart.S 2007-11-28 10:14:51.000000000 +0100 ++++ cacao-0.98+hg7750/src/vm/jit/arm/asmpart.S 2007-11-28 10:15:31.000000000 +0100 +@@ -302,35 +302,21 @@ + * * + *******************************************************************************/ + +-.equ sys_cacheflush,__ARM_NR_cacheflush /* syscall number for cache flushing */ +- ++.equ sys_cacheflush, 0x9f0002 + asm_cacheflush: +- add a1, a0, a1 +- mov a2, #0 +- +-#if defined(__ARM_EABI__) +- /* According to EABI, the syscall number should be passed via R7, +- see "http://wiki.debian.org/ArmEabiPort" for additional details. */ +- +- stmfd sp!, {r7} +- mov r7, #0x0f0000 +- add r7, r7, #0x000002 +-#endif ++ add a1, a0, a1 ++ mov a2, #0 + + #if 0 +- /* TWISTI: required on iyonix, maybe a linux-2.4 bug */ +- mov a0, #0x0 +- mov a1, #0xff000000 ++ /* TWISTI: required on iyonix, maybe a linux-2.4 bug */ ++ /* TODO: repeair this! */ ++ /* cacheflush is messed up beyond all repair! */ ++ mov a0, #0x0 ++ mov a1, #0xff000000 + #endif + +- swi sys_cacheflush +- +-#if defined(__ARM_EABI__) +- ldmfd sp!, {r7} +-#endif +- +- mov pc, lr +- ++ swi #sys_cacheflush ++ mov pc, lr + + /* disable exec-stacks ********************************************************/ + |