MIPS: ptrace: Fix user pt_regs definition, use in ptrace_{get, set}regs()
In uapi/asm/ptrace.h, a user version of pt_regs is defined wrapped in
ifndef __KERNEL__. This structure definition does not match anything
used by any kernel API, in particular it does not match the format used
by PTRACE_{GET,SET}REGS.
Therefore, replace the structure definition with one matching what is
used by PTRACE_{GET,SET}REGS. The format used by these is the same for
both 32-bit and 64-bit.
Also, change the implementation of PTRACE_{GET,SET}REGS to use this new
structure definition. The structure is renamed to user_pt_regs when
__KERNEL__ is defined to avoid conflicts with the kernel's own pt_regs.
Signed-off-by: Alex Smith <alex@alex-smith.me.uk>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/7457/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
@@ -22,24 +22,27 @@
|
||||
#define DSP_CONTROL 77
|
||||
#define ACX 78
|
||||
|
||||
#ifndef __KERNEL__
|
||||
/*
|
||||
* This struct defines the way the registers are stored on the stack during a
|
||||
* system call/exception. As usual the registers k0/k1 aren't being saved.
|
||||
* This struct defines the registers as used by PTRACE_{GET,SET}REGS. The
|
||||
* format is the same for both 32- and 64-bit processes. Registers for 32-bit
|
||||
* processes are sign extended.
|
||||
*/
|
||||
#ifdef __KERNEL__
|
||||
struct user_pt_regs {
|
||||
#else
|
||||
struct pt_regs {
|
||||
#endif
|
||||
/* Saved main processor registers. */
|
||||
unsigned long regs[32];
|
||||
__u64 regs[32];
|
||||
|
||||
/* Saved special registers. */
|
||||
unsigned long cp0_status;
|
||||
unsigned long hi;
|
||||
unsigned long lo;
|
||||
unsigned long cp0_badvaddr;
|
||||
unsigned long cp0_cause;
|
||||
unsigned long cp0_epc;
|
||||
__u64 lo;
|
||||
__u64 hi;
|
||||
__u64 cp0_epc;
|
||||
__u64 cp0_badvaddr;
|
||||
__u64 cp0_status;
|
||||
__u64 cp0_cause;
|
||||
} __attribute__ ((aligned (8)));
|
||||
#endif /* __KERNEL__ */
|
||||
|
||||
/* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
|
||||
#define PTRACE_GETREGS 12
|
||||
|
||||
Reference in New Issue
Block a user