diff options
Diffstat (limited to 'mdk-stage1/dietlibc/sparc/setjmp.S')
-rw-r--r-- | mdk-stage1/dietlibc/sparc/setjmp.S | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/sparc/setjmp.S b/mdk-stage1/dietlibc/sparc/setjmp.S new file mode 100644 index 000000000..be77af3c4 --- /dev/null +++ b/mdk-stage1/dietlibc/sparc/setjmp.S @@ -0,0 +1,35 @@ +#define _ASM +#define _SETJMP_H +#include <bits/setjmp.h> + +#define ST_FLUSH_WINDOWS 0x03 + +.section .rodata +.text +.globl __setjmp +__setjmp: + b 1f + set 0, %o1 +.size __setjmp,.-__setjmp + +.globl setjmp +setjmp: + set 1, %o1 +.size setjmp,.-setjmp + +.globl __sigsetjmp +__sigsetjmp: +1: + /* Save our PC, SP and FP. Save the signal mask if requested with + a tail-call for simplicity; it always returns zero. */ + ta ST_FLUSH_WINDOWS + + st %o7, [%o0 + (JB_PC * 4)] + st %sp, [%o0 + (JB_SP * 4)] + st %fp, [%o0 + (JB_FP * 4)] + + mov %o7, %g1 + call __sigjmp_save + mov %g1, %o7 +.size __sigsetjmp,.-__sigsetjmp + |