diff options
Diffstat (limited to 'src/signal')
-rw-r--r-- | src/signal/aarch64/restore.s | 8 | ||||
-rw-r--r-- | src/signal/aarch64/sigsetjmp.s | 19 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/signal/aarch64/restore.s b/src/signal/aarch64/restore.s new file mode 100644 index 00000000..d3d0243d --- /dev/null +++ b/src/signal/aarch64/restore.s @@ -0,0 +1,8 @@ +.global __restore +.type __restore,%function +__restore: +.global __restore_rt +.type __restore_rt,%function +__restore_rt: + mov x8,#139 // SYS_rt_sigreturn + svc 0 diff --git a/src/signal/aarch64/sigsetjmp.s b/src/signal/aarch64/sigsetjmp.s new file mode 100644 index 00000000..e0f83f06 --- /dev/null +++ b/src/signal/aarch64/sigsetjmp.s @@ -0,0 +1,19 @@ +.global sigsetjmp +.global __sigsetjmp +.type sigsetjmp,%function +.type __sigsetjmp,%function +sigsetjmp: +__sigsetjmp: + str x1,[x0,#176] + cbz x1,setjmp + + // TODO errno? + // sigprocmask(SIG_SETMASK, 0, (sigset_t*)buf->__ss); + stp x0,x30,[sp,#-16]! + add x2,x0,#184 + mov x1,#0 + mov x0,#2 + bl sigprocmask + ldp x0,x30,[sp],#16 + + b setjmp |