Blame view

epsilon-master/liba/src/armv7m/longjmp.s 571 Bytes
6663b6c9   adorian   projet complet av...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
  .syntax unified
  
  .section .text
  .align 2
  .thumb
  .global longjmp
  longjmp:
    /* Restore all the regsiters to get back in the original state (whenever the
       matching setjmp was called. */
    // General purpose registers
    ldmia  r0!, { r4-r11, ip, lr }
    // Floating point registers
    vldmia r0!, { s16-s31 }
    // Special case for VFP status register
    ldr r0, [r0, #4]
    vmsr fpscr, r0
    mov  sp, ip
    /* Put the return value in the integer result register, but return 1 if it is
       in fact zero. */
    movs r0, r1
    it eq
    moveq r0, #1
    bx lr
  .type longjmp, function