xtensa: expose syscall through user_pt_regs
Use one of the reserved slots in struct user_pt_regs to return syscall number in the GPR regset. Update syscall number from the GPR regset only when it's non-zero. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
ef1a935c08
commit
8b7a87a03f
|
@ -50,7 +50,8 @@ struct user_pt_regs {
|
|||
__u32 windowstart;
|
||||
__u32 windowbase;
|
||||
__u32 threadptr;
|
||||
__u32 reserved[7 + 48];
|
||||
__u32 syscall;
|
||||
__u32 reserved[6 + 48];
|
||||
__u32 a[64];
|
||||
};
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ static int gpr_get(struct task_struct *target,
|
|||
.threadptr = regs->threadptr,
|
||||
.windowbase = regs->windowbase,
|
||||
.windowstart = regs->windowstart,
|
||||
.syscall = regs->syscall,
|
||||
};
|
||||
|
||||
memcpy(newregs.a,
|
||||
|
@ -91,6 +92,9 @@ static int gpr_set(struct task_struct *target,
|
|||
regs->sar = newregs.sar;
|
||||
regs->threadptr = newregs.threadptr;
|
||||
|
||||
if (newregs.syscall)
|
||||
regs->syscall = newregs.syscall;
|
||||
|
||||
if (newregs.windowbase != regs->windowbase ||
|
||||
newregs.windowstart != regs->windowstart) {
|
||||
u32 rotws, wmask;
|
||||
|
|
Loading…
Reference in New Issue