1 #if defined(WITH_SELF_VERIFICATION) 2 /* 3 * This handler encapsulates heap memory ops for selfVerification mode. 4 * 5 * The call to the handler is inserted prior to a heap memory operation. 6 * This handler then calls a function to decode the memory op, and process 7 * it accordingly. Afterwards, the handler changes the return address to 8 * skip the memory op so it never gets executed. 9 */ 10 push {r0-r12,lr} @ save out all registers 11 ldr r2, .LdvmSelfVerificationMemOpDecode @ defined in footer.S 12 mov r0, lr @ arg0 <- link register 13 mov r1, sp @ arg1 <- stack pointer 14 blx r2 @ decode and handle the mem op 15 pop {r0-r12,lr} @ restore all registers 16 bx lr @ return to compiled code 17 #endif 18