arm64: Add __NR_* definitions for compat syscalls
[cascardo/linux.git] / arch / arm64 / kernel / signal32.c
index ac7e237..c5ee208 100644 (file)
 #include <linux/syscalls.h>
 #include <linux/ratelimit.h>
 
+#include <asm/esr.h>
 #include <asm/fpsimd.h>
 #include <asm/signal32.h>
 #include <asm/uaccess.h>
-#include <asm/unistd32.h>
+#include <asm/unistd.h>
 
 struct compat_sigcontext {
        /* We always set these two fields to 0 */
@@ -81,6 +82,8 @@ struct compat_vfp_sigframe {
 #define VFP_MAGIC              0x56465001
 #define VFP_STORAGE_SIZE       sizeof(struct compat_vfp_sigframe)
 
+#define FSR_WRITE_SHIFT                (11)
+
 struct compat_aux_sigframe {
        struct compat_vfp_sigframe      vfp;
 
@@ -497,7 +500,9 @@ static int compat_setup_sigframe(struct compat_sigframe __user *sf,
        __put_user_error(regs->pstate, &sf->uc.uc_mcontext.arm_cpsr, err);
 
        __put_user_error((compat_ulong_t)0, &sf->uc.uc_mcontext.trap_no, err);
-       __put_user_error((compat_ulong_t)0, &sf->uc.uc_mcontext.error_code, err);
+       /* set the compat FSR WnR */
+       __put_user_error(!!(current->thread.fault_code & ESR_EL1_WRITE) <<
+                        FSR_WRITE_SHIFT, &sf->uc.uc_mcontext.error_code, err);
        __put_user_error(current->thread.fault_address, &sf->uc.uc_mcontext.fault_address, err);
        __put_user_error(set->sig[0], &sf->uc.uc_mcontext.oldmask, err);