return ret;
 }
 
+static int system_call_get(struct task_struct *target,
+                          const struct user_regset *regset,
+                          unsigned int pos, unsigned int count,
+                          void *kbuf, void __user *ubuf)
+{
+       int syscallno = task_pt_regs(target)->syscallno;
+
+       return user_regset_copyout(&pos, &count, &kbuf, &ubuf,
+                                  &syscallno, 0, -1);
+}
+
+static int system_call_set(struct task_struct *target,
+                          const struct user_regset *regset,
+                          unsigned int pos, unsigned int count,
+                          const void *kbuf, const void __user *ubuf)
+{
+       int syscallno, ret;
+
+       ret = user_regset_copyin(&pos, &count, &kbuf, &ubuf, &syscallno, 0, -1);
+       if (ret)
+               return ret;
+
+       task_pt_regs(target)->syscallno = syscallno;
+       return ret;
+}
+
 enum aarch64_regset {
        REGSET_GPR,
        REGSET_FPR,
        REGSET_HW_BREAK,
        REGSET_HW_WATCH,
 #endif
+       REGSET_SYSTEM_CALL,
 };
 
 static const struct user_regset aarch64_regsets[] = {
                .set = hw_break_set,
        },
 #endif
+       [REGSET_SYSTEM_CALL] = {
+               .core_note_type = NT_ARM_SYSTEM_CALL,
+               .n = 1,
+               .size = sizeof(int),
+               .align = sizeof(int),
+               .get = system_call_get,
+               .set = system_call_set,
+       },
 };
 
 static const struct user_regset_view user_aarch64_view = {
 
 #define NT_ARM_TLS     0x401           /* ARM TLS register */
 #define NT_ARM_HW_BREAK        0x402           /* ARM hardware breakpoint registers */
 #define NT_ARM_HW_WATCH        0x403           /* ARM hardware watchpoint registers */
+#define NT_ARM_SYSTEM_CALL     0x404   /* ARM system call number */
 #define NT_METAG_CBUF  0x500           /* Metag catch buffer registers */
 #define NT_METAG_RPIPE 0x501           /* Metag read pipeline state */
 #define NT_METAG_TLS   0x502           /* Metag TLS pointer */