diff options
-rw-r--r-- | arch/tile/include/uapi/asm/ptrace.h | 16 | ||||
-rw-r--r-- | arch/tile/include/uapi/asm/sigcontext.h | 14 |
2 files changed, 20 insertions, 10 deletions
diff --git a/arch/tile/include/uapi/asm/ptrace.h b/arch/tile/include/uapi/asm/ptrace.h index 7757e1985fb6..d03b829857e8 100644 --- a/arch/tile/include/uapi/asm/ptrace.h +++ b/arch/tile/include/uapi/asm/ptrace.h | |||
@@ -52,12 +52,16 @@ typedef uint_reg_t pt_reg_t; | |||
52 | * system call or exception. "struct sigcontext" has the same shape. | 52 | * system call or exception. "struct sigcontext" has the same shape. |
53 | */ | 53 | */ |
54 | struct pt_regs { | 54 | struct pt_regs { |
55 | /* Saved main processor registers; 56..63 are special. */ | 55 | union { |
56 | /* tp, sp, and lr must immediately follow regs[] for aliasing. */ | 56 | /* Saved main processor registers; 56..63 are special. */ |
57 | pt_reg_t regs[53]; | 57 | pt_reg_t regs[56]; |
58 | pt_reg_t tp; /* aliases regs[TREG_TP] */ | 58 | struct { |
59 | pt_reg_t sp; /* aliases regs[TREG_SP] */ | 59 | pt_reg_t __regs[53]; |
60 | pt_reg_t lr; /* aliases regs[TREG_LR] */ | 60 | pt_reg_t tp; /* aliases regs[TREG_TP] */ |
61 | pt_reg_t sp; /* aliases regs[TREG_SP] */ | ||
62 | pt_reg_t lr; /* aliases regs[TREG_LR] */ | ||
63 | }; | ||
64 | }; | ||
61 | 65 | ||
62 | /* Saved special registers. */ | 66 | /* Saved special registers. */ |
63 | pt_reg_t pc; /* stored in EX_CONTEXT_K_0 */ | 67 | pt_reg_t pc; /* stored in EX_CONTEXT_K_0 */ |
diff --git a/arch/tile/include/uapi/asm/sigcontext.h b/arch/tile/include/uapi/asm/sigcontext.h index 6348e59d3724..39ff5d1a232d 100644 --- a/arch/tile/include/uapi/asm/sigcontext.h +++ b/arch/tile/include/uapi/asm/sigcontext.h | |||
@@ -24,10 +24,16 @@ | |||
24 | * but is simplified since we know the fault is from userspace. | 24 | * but is simplified since we know the fault is from userspace. |
25 | */ | 25 | */ |
26 | struct sigcontext { | 26 | struct sigcontext { |
27 | __uint_reg_t gregs[53]; /* General-purpose registers. */ | 27 | __extension__ union { |
28 | __uint_reg_t tp; /* Aliases gregs[TREG_TP]. */ | 28 | /* General-purpose registers. */ |
29 | __uint_reg_t sp; /* Aliases gregs[TREG_SP]. */ | 29 | __uint_reg_t gregs[56]; |
30 | __uint_reg_t lr; /* Aliases gregs[TREG_LR]. */ | 30 | __extension__ struct { |
31 | __uint_reg_t __gregs[53]; | ||
32 | __uint_reg_t tp; /* Aliases gregs[TREG_TP]. */ | ||
33 | __uint_reg_t sp; /* Aliases gregs[TREG_SP]. */ | ||
34 | __uint_reg_t lr; /* Aliases gregs[TREG_LR]. */ | ||
35 | }; | ||
36 | }; | ||
31 | __uint_reg_t pc; /* Program counter. */ | 37 | __uint_reg_t pc; /* Program counter. */ |
32 | __uint_reg_t ics; /* In Interrupt Critical Section? */ | 38 | __uint_reg_t ics; /* In Interrupt Critical Section? */ |
33 | __uint_reg_t faultnum; /* Fault number. */ | 39 | __uint_reg_t faultnum; /* Fault number. */ |