|
@@ -27,6 +27,9 @@
|
|
|
*
|
|
|
* See Documentation/arm/kernel_user_helpers.txt for formal definitions.
|
|
|
*/
|
|
|
+
|
|
|
+#include <asm/unistd32.h>
|
|
|
+
|
|
|
.align 5
|
|
|
.globl __kuser_helper_start
|
|
|
__kuser_helper_start:
|
|
@@ -75,3 +78,42 @@ __kuser_helper_version: // 0xffff0ffc
|
|
|
.word ((__kuser_helper_end - __kuser_helper_start) >> 5)
|
|
|
.globl __kuser_helper_end
|
|
|
__kuser_helper_end:
|
|
|
+
|
|
|
+/*
|
|
|
+ * AArch32 sigreturn code
|
|
|
+ *
|
|
|
+ * For ARM syscalls, the syscall number has to be loaded into r7.
|
|
|
+ * We do not support an OABI userspace.
|
|
|
+ *
|
|
|
+ * For Thumb syscalls, we also pass the syscall number via r7. We therefore
|
|
|
+ * need two 16-bit instructions.
|
|
|
+ */
|
|
|
+ .globl __aarch32_sigret_code_start
|
|
|
+__aarch32_sigret_code_start:
|
|
|
+
|
|
|
+ /*
|
|
|
+ * ARM Code
|
|
|
+ */
|
|
|
+ .byte __NR_compat_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_sigreturn
|
|
|
+ .byte __NR_compat_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_sigreturn
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Thumb code
|
|
|
+ */
|
|
|
+ .byte __NR_compat_sigreturn, 0x27 // svc #__NR_compat_sigreturn
|
|
|
+ .byte __NR_compat_sigreturn, 0xdf // mov r7, #__NR_compat_sigreturn
|
|
|
+
|
|
|
+ /*
|
|
|
+ * ARM code
|
|
|
+ */
|
|
|
+ .byte __NR_compat_rt_sigreturn, 0x70, 0xa0, 0xe3 // mov r7, #__NR_compat_rt_sigreturn
|
|
|
+ .byte __NR_compat_rt_sigreturn, 0x00, 0x00, 0xef // svc #__NR_compat_rt_sigreturn
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Thumb code
|
|
|
+ */
|
|
|
+ .byte __NR_compat_rt_sigreturn, 0x27 // svc #__NR_compat_rt_sigreturn
|
|
|
+ .byte __NR_compat_rt_sigreturn, 0xdf // mov r7, #__NR_compat_rt_sigreturn
|
|
|
+
|
|
|
+ .globl __aarch32_sigret_code_end
|
|
|
+__aarch32_sigret_code_end:
|