summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/h8300/bsd-setjmp.S
diff options
context:
space:
mode:
authorEric Andersen <andersen@codepoet.org>2004-07-15 07:34:00 +0000
committerEric Andersen <andersen@codepoet.org>2004-07-15 07:34:00 +0000
commit71150804d1ac8ed2f7b9c6d3025fd415c58b129e (patch)
treeaab8c892a813847614070f73e711178cd3c9ec74 /libc/sysdeps/linux/h8300/bsd-setjmp.S
parent255fbb6abcef56c5f8c36383d49a902686f258f5 (diff)
h8300 updates from Yoshinori Sato
Diffstat (limited to 'libc/sysdeps/linux/h8300/bsd-setjmp.S')
-rw-r--r--libc/sysdeps/linux/h8300/bsd-setjmp.S30
1 files changed, 30 insertions, 0 deletions
diff --git a/libc/sysdeps/linux/h8300/bsd-setjmp.S b/libc/sysdeps/linux/h8300/bsd-setjmp.S
new file mode 100644
index 000000000..9c3535503
--- /dev/null
+++ b/libc/sysdeps/linux/h8300/bsd-setjmp.S
@@ -0,0 +1,30 @@
+/* BSD `_setjmp' entry point to `sigsetjmp (..., 1)'. H8/300 version. */
+
+#define _ASM
+#define _SETJMP_H
+#include <bits/setjmp.h>
+
+#ifdef __H8300S__
+ .h8300s
+#else
+ .h8300h
+#endif
+ .text
+
+.global _setjmp
+
+_setjmp:
+ add.l #JB_SIZE,er0
+ mov.l @sp,er1 ; return PC
+ mov.l er1,@-er0
+ mov.l sp,@-er0
+ mov.l er6,@-er0
+ mov.l er5,@-er0
+ mov.l er4,@-er0
+ sub.l er0,er0
+#if !defined(__PIC__)
+ jmp @___sigjmp_save
+#else
+ mov.l @(___sigjmp_save@GOTOFF,er5),er1
+ jmp @er3
+#endif