summaryrefslogtreecommitdiff
path: root/package/aboot/src/lib/_setjmp.S
diff options
context:
space:
mode:
Diffstat (limited to 'package/aboot/src/lib/_setjmp.S')
-rw-r--r--package/aboot/src/lib/_setjmp.S36
1 files changed, 36 insertions, 0 deletions
diff --git a/package/aboot/src/lib/_setjmp.S b/package/aboot/src/lib/_setjmp.S
new file mode 100644
index 000000000..98d6366bb
--- /dev/null
+++ b/package/aboot/src/lib/_setjmp.S
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 1995 David Mosberger (davidm@cs.arizona.edu)
+ */
+#include <setjmp.h>
+
+ .globl _setjmp
+ .ent _setjmp
+
+_setjmp:
+ stq $29, JB_GP($16)
+ stq $30, JB_SP($16)
+ stq $9, JB_S0($16)
+ stq $10, JB_S1($16)
+ stq $11, JB_S2($16)
+ stq $12, JB_S3($16)
+ stq $13, JB_S4($16)
+ stq $14, JB_S5($16)
+ stq $15, JB_S6($16)
+ stq $26, JB_RA($16)
+#ifdef FPU
+ stt $f2, JB_F2($16)
+ stt $f3, JB_F3($16)
+ stt $f4, JB_F4($16)
+ stt $f5, JB_F5($16)
+ stt $f6, JB_F6($16)
+ stt $f7, JB_F7($16)
+ stt $f8, JB_F8($16)
+ stt $f9, JB_F9($16)
+#endif
+ lda $1, JBMAGIC & 0xffff
+ ldah $1, ((JBMAGIC >> 16) & 0xffff)($1)
+ stq $1, JB_MAGIC($16)
+ clr $0
+ ret ($26)
+
+ .end _setjmp