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    vpush   {d0-d15}                    @ save out all fp registers
11    push    {r0-r12,lr}                 @ save out all registers
12    ldr     r2, .LdvmSelfVerificationMemOpDecode @ defined in footer.S
13    mov     r0, lr                      @ arg0 <- link register
14    mov     r1, sp                      @ arg1 <- stack pointer
15    blx     r2                          @ decode and handle the mem op
16    pop     {r0-r12,lr}                 @ restore all registers
17    vpop    {d0-d15}                    @ restore all fp registers
18    bx      lr                          @ return to compiled code
19#endif
20