Home | History | Annotate | Download | only in armv5te-vfp
      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     add     r0, #12                     @ move to start of FP save regio
     21     vstmia  r0, {d0-d15}
     22     pop     {r0, r7}                    @ recover r0, r7
     23     bx      lr
     24