Home | History | Annotate | Download | only in armv5te
      1     /*
      2      * This handler performs a register save for selfVerification mode.
      3      * On entry:
      4      *    Top of stack + 4: r7 value to save
      5      *    Top of stack + 0: r0 value to save
      6      *    r0 - offset from rSELF to the beginning of the heapArgSpace record
      7      *    r7 - the value of regMap
      8      *
      9      * The handler must save regMap, r0-r12 and then return with r0-r12
     10      * with their original values (note that this means r0 and r7 must take
     11      * the values on the stack - not the ones in those registers on entry.
     12      * Finally, the two registers previously pushed must be popped.
     13      */
     14     add     r0, r0, rSELF               @ pointer to heapArgSpace
     15     stmia   r0!, {r7}                   @ save regMap
     16     ldr     r7, [r13, #0]               @ recover r0 value
     17     stmia   r0!, {r7}                   @ save r0
     18     ldr     r7, [r13, #4]               @ recover r7 value
     19     stmia   r0!, {r1-r12}
     20     pop     {r0, r7}                    @ recover r0, r7
     21     bx      lr
     22