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.