summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--arch/x32/ksigaction.h9
-rw-r--r--arch/x86_64/ksigaction.h9
-rw-r--r--src/signal/x32/restore.s7
-rw-r--r--src/signal/x86_64/restore.s7
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