maybe a solution ?
(mail-archive.com/haret-devel@lists.linuxtogo.org/msg00013.html)
i found this response on google
I think I found the problem.
In mmu_trampoline function there is a code for setting translation table entry. But if the physical address of the mmu_trampoline is less or equal to 0x01ffffff, than the index to the table is wrong. The physical address will be actually virtual address, so we need modified virtual address for obtaining the index to the translation table.
I patched the code this way and there is no unhandled exception (on MSM7225):
@ Turn off mapping for this code
mov r1, r4, lsr #20
mov r0, r1, asl #20 @ r0 = funcaddr & 0xfff00000
orr r0, r0, #0x00000C00
orr r0, r0, #0x00000002 @ r0 |= 0xC02
@ next five lines count the mva and extract the index
mov r1, r4
mrc p15, 0, r7, c13, c0, 0
and r7, r7, #0xFE000000
orr r1, r1, r7
mov r1, r1, lsr #20
str r0, [r5, r1, asl #2] @ mmu[funcaddr>>20] = r0
The code lacks the condition for funcaddr (funcaddr <= 0x01ffffff).
Compiled HaRET with this patch is available here:
http://xdaforums.com/attachment.php?attachmentid=284592&d=1266872927
I haven't booted Android yet because I don't have proper one (for HTC Jade).
Can somebody confirm if am I right?
Radim