diff options
-rw-r--r-- | arch/x32/ksigaction.h | 9 | ||||
-rw-r--r-- | arch/x86_64/ksigaction.h | 9 | ||||
-rw-r--r-- | src/signal/x32/restore.s | 7 | ||||
-rw-r--r-- | src/signal/x86_64/restore.s | 7 |
4 files changed, 24 insertions, 8 deletions
diff --git a/arch/x32/ksigaction.h b/arch/x32/ksigaction.h new file mode 100644 index 00000000..7743c5c6 --- /dev/null +++ b/arch/x32/ksigaction.h @@ -0,0 +1,9 @@ +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void (*restorer)(void); + unsigned mask[2]; +}; + +void __restore_rt(); +#define __restore __restore_rt diff --git a/arch/x86_64/ksigaction.h b/arch/x86_64/ksigaction.h new file mode 100644 index 00000000..7743c5c6 --- /dev/null +++ b/arch/x86_64/ksigaction.h @@ -0,0 +1,9 @@ +struct k_sigaction { + void (*handler)(int); + unsigned long flags; + void (*restorer)(void); + unsigned mask[2]; +}; + +void __restore_rt(); +#define __restore __restore_rt diff --git a/src/signal/x32/restore.s b/src/signal/x32/restore.s index 27cd3cef..2f06e787 100644 --- a/src/signal/x32/restore.s +++ b/src/signal/x32/restore.s @@ -1,8 +1,7 @@ + nop .global __restore_rt -.global __restore .type __restore_rt,@function -.type __restore,@function __restore_rt: -__restore: - movl $0x40000201, %eax /* SYS_rt_sigreturn */ + mov $0x40000201, %rax /* SYS_rt_sigreturn */ syscall +.size __restore_rt,.-__restore_rt diff --git a/src/signal/x86_64/restore.s b/src/signal/x86_64/restore.s index 682af2dd..b5c6e37f 100644 --- a/src/signal/x86_64/restore.s +++ b/src/signal/x86_64/restore.s @@ -1,8 +1,7 @@ + nop .global __restore_rt -.global __restore .type __restore_rt,@function -.type __restore,@function __restore_rt: -__restore: - movl $15, %eax + mov $15, %rax syscall +.size __restore_rt,.-__restore_rt |