ARM lzma bug in cacheflush

This commit is contained in:
John Reiser 2006-07-23 07:19:35 -07:00
parent 2f6ce88e28
commit 1993e94e53
3 changed files with 1880 additions and 1881 deletions

File diff suppressed because it is too large Load Diff

View File

@ -112,13 +112,13 @@
#define __NR_SYSCALL_BASE 0x900000
#define __ARM_NR_BASE (__NR_SYSCALL_BASE+0x0f0000)
#define __ARM_NR_cacheflush (__ARM_NR_BASE+2)
mov r4,r0 // save result value
mov r3,r0 // save result value
POP {r0,r1} // dst, ldst
ldr r1,[r1] // ldst by reference
add r1,r1,r0 // just beyond what was written
mov r2,#0
swi __ARM_NR_cacheflush // decompressed region
mov r0,r4 // result value
mov r0,r3 // result value
#endif /*}*/
POP {fp,pc}

View File

@ -111,8 +111,7 @@ copy:
str r3,[sp,#2*4] // sz_unc; lzma needs for EOF
add r3, sp,#2*4 // &sz_unc
mov lr,pc; mov pc,r5 // decompress folded code [opcode 'bx' not in v4a]
add sp,sp,#4 // discard 5th param
ldmia sp!,{pc}
ldmia sp!,{r1, pc} // discard 5th param; return
f_decompress:
#define LINUX_ARM_CACHEFLUSH 1