about summary refs log tree commit diff
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