Index: fusl/src/signal/sh/sigsetjmp.s |
diff --git a/fusl/src/signal/sh/sigsetjmp.s b/fusl/src/signal/sh/sigsetjmp.s |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1e2270beeccb208875ae1a91342b1c2c0c01f096 |
--- /dev/null |
+++ b/fusl/src/signal/sh/sigsetjmp.s |
@@ -0,0 +1,41 @@ |
+.global sigsetjmp |
+.global __sigsetjmp |
+.type sigsetjmp,@function |
+.type __sigsetjmp,@function |
+sigsetjmp: |
+__sigsetjmp: |
+ tst r5, r5 |
+ bt 9f |
+ |
+ mov r4, r6 |
+ add #60, r6 |
+ sts pr, r0 |
+ mov.l r0, @r6 |
+ mov.l r8, @(4+8,r6) |
+ |
+ mov.l 1f, r0 |
+2: bsrf r0 |
+ mov r4, r8 |
+ |
+ mov r0, r5 |
+ mov r8, r4 |
+ mov r4, r6 |
+ add #60, r6 |
+ |
+ mov.l @r6, r0 |
+ lds r0, pr |
+ |
+ mov.l 3f, r0 |
+4: braf r0 |
+ mov.l @(4+8,r4), r8 |
+ |
+9: mov.l 5f, r0 |
+6: braf r0 |
+ nop |
+ |
+.align 2 |
+.hidden ___setjmp |
+1: .long ___setjmp@PLT-(2b+4-.) |
+.hidden __sigsetjmp_tail |
+3: .long __sigsetjmp_tail@PLT-(4b+4-.) |
+5: .long ___setjmp@PLT-(6b+4-.) |