About the author
On ARMv7 processors running Google Android, it's necessary to flush the CPU cache for reasons stated here. As the Android NDK misses some files out on ARM, it's really very difficult to find out how to flush the CPU cache.
After some research and tinkling, to flush the CPU cache on ARM, the code to do this is as follows:
MOV R0, startaddr MOV R1, endaddr MOV R7, #0xF0000 MOV R2, #0 ADD R7, R7, #2 SVC 0x0 BX LR
My good friend, Jeroen, isn't clear why I wanted to flush the CPU cache. Here's the reason for Jeroen: self-modifying code.
A method pointer is now the same as a global procedure, ie, procedure of object = procedure.