diff options
Diffstat (limited to 'src/signal/superh')
-rw-r--r-- | src/signal/superh/restore.s | 24 | ||||
-rw-r--r-- | src/signal/superh/sigsetjmp.s | 27 |
2 files changed, 51 insertions, 0 deletions
diff --git a/src/signal/superh/restore.s b/src/signal/superh/restore.s new file mode 100644 index 00000000..ab26034b --- /dev/null +++ b/src/signal/superh/restore.s @@ -0,0 +1,24 @@ +.global __restore +.type __restore, @function +__restore: + mov #119, r3 !__NR_sigreturn + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + +.global __restore_rt +.type __restore_rt, @function +__restore_rt: + mov #100, r3 !__NR_rt_sigreturn + add #73, r3 + trapa #16 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 diff --git a/src/signal/superh/sigsetjmp.s b/src/signal/superh/sigsetjmp.s new file mode 100644 index 00000000..f6cae801 --- /dev/null +++ b/src/signal/superh/sigsetjmp.s @@ -0,0 +1,27 @@ +.global sigsetjmp +.type sigsetjmp, @function +sigsetjmp: + mov.l r5, @(36,r4) + tst r5, r5 + bf 2f + + sts.l pr, @-r15 + mov.l r4, @-r15 + mov r4, r6 + add #40, r6 + mov #0, r5 + mov #2, r4 + mov.l L1, r0 + bsrf r0 + nop +1: mov.l @r15+, r4 + lds.l @r15+, pr + +2: mov.l L2, r0 + braf r0 + nop +3: + +.align 2 +L1: .long pthread_sigmask@PLT-(1b-.) +L2: .long setjmp@PLT-(3b-.) |