alberthrocks

setjmp.h

Sep 8th, 2012
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.57 KB | None | 0 0
  1. // ARM ONLY
  2.  
  3. // Define jmp_buf
  4. typedef int[10] jmp_buf;
  5.  
  6. // longjmp(jmp_buf env, int value)
  7. // Prototype
  8. void longjmp(jmp_buf env, int value) __attribute__ ((naked));
  9.  
  10. void longjmp(jmp_buf env, int value) __attribute__ ((naked)) {
  11.     __asm__ __volatile__ {
  12.         "ldmia r0,{r4-r11,sp-lr}"
  13.         "movs r0,r1"
  14.         "moveq r0,#1"
  15.         "bx lr"
  16.     }
  17. }
  18.  
  19. // longjmp(jmp_buf env, int value)
  20. // Prototype
  21. int setjmp(jmp_buf env) __attribute__ ((naked));
  22.  
  23. int setjmp(jmp_buf env) __attribute__ ((naked)) {
  24.     __asm __volatile__ {
  25.         "stmia r0, {r4-r11,sp-lr}"
  26.         "mov r0, #0"
  27.         "bx lr"
  28.     }
  29. }
Advertisement
Add Comment
Please, Sign In to add comment