aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/uapi/asm/ptrace.h
diff options
context:
space:
mode:
authorMichael Ellerman <mpe@ellerman.id.au>2018-10-12 23:13:17 +1100
committerMichael Ellerman <mpe@ellerman.id.au>2018-10-14 18:04:09 +1100
commit002af9391bfbe84f8e491bb10bd9c6001a6becee (patch)
treef7e1cdb3d2e2f48327908e4211b3074bca8c6659 /arch/powerpc/include/uapi/asm/ptrace.h
parentpowerpc/prom_init: Make "default_colors" const (diff)
downloadlinux-dev-002af9391bfbe84f8e491bb10bd9c6001a6becee.tar.xz
linux-dev-002af9391bfbe84f8e491bb10bd9c6001a6becee.zip
powerpc: Split user/kernel definitions of struct pt_regs
We use a shared definition for struct pt_regs in uapi/asm/ptrace.h. That means the layout of the structure is ABI, ie. we can't change it. That would be fine if it was only used to describe the user-visible register state of a process, but it's also the struct we use in the kernel to describe the registers saved in an interrupt frame. We'd like more flexibility in the content (and possibly layout) of the kernel version of the struct, but currently that's not possible. So split the definition into a user-visible definition which remains unchanged, and a kernel internal one. At the moment they're still identical, and we check that at build time. That's because we have code (in ptrace etc.) that assumes that they are the same. We will fix that code in future patches, and then we can break the strict symmetry between the two structs. Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/include/uapi/asm/ptrace.h')
-rw-r--r--arch/powerpc/include/uapi/asm/ptrace.h7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/include/uapi/asm/ptrace.h b/arch/powerpc/include/uapi/asm/ptrace.h
index 55c7a131d2ab..f5f1ccc740fc 100644
--- a/arch/powerpc/include/uapi/asm/ptrace.h
+++ b/arch/powerpc/include/uapi/asm/ptrace.h
@@ -29,7 +29,12 @@
#ifndef __ASSEMBLY__
-struct pt_regs {
+#ifdef __KERNEL__
+struct user_pt_regs
+#else
+struct pt_regs
+#endif
+{
unsigned long gpr[32];
unsigned long nip;
unsigned long msr;