diff options
author | David Howells <dhowells@redhat.com> | 2006-07-10 07:44:55 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-10 16:24:22 -0400 |
commit | 84e8cd6dbc00b4979e8d1c15c80d91987aeb3417 (patch) | |
tree | 5df8103b5e6d414bc39e165655ae8bd5341abd76 /include/asm-frv/registers.h | |
parent | 6d8c4e3b0150ff537902477ed62f8a8e9e70007b (diff) |
[PATCH] FRV: Introduce asm-offsets for FRV arch
Introduce the use of asm-offsets into the FRV architecture.
Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-frv/registers.h')
-rw-r--r-- | include/asm-frv/registers.h | 97 |
1 files changed, 37 insertions, 60 deletions
diff --git a/include/asm-frv/registers.h b/include/asm-frv/registers.h index fccfd95cff68..9666119fcf6e 100644 --- a/include/asm-frv/registers.h +++ b/include/asm-frv/registers.h | |||
@@ -23,7 +23,13 @@ | |||
23 | * | 23 | * |
24 | * +0x2000 +---------------------- | 24 | * +0x2000 +---------------------- |
25 | * | union { | 25 | * | union { |
26 | * | struct user_context | 26 | * | struct frv_frame0 { |
27 | * | struct user_context { | ||
28 | * | struct user_int_regs | ||
29 | * | struct user_fpmedia_regs | ||
30 | * | } | ||
31 | * | struct frv_debug_regs | ||
32 | * | } | ||
27 | * | struct pt_regs [user exception] | 33 | * | struct pt_regs [user exception] |
28 | * | } | 34 | * | } |
29 | * +---------------------- <-- __kernel_frame0_ptr (maybe GR28) | 35 | * +---------------------- <-- __kernel_frame0_ptr (maybe GR28) |
@@ -51,11 +57,11 @@ | |||
51 | #define _ASM_REGISTERS_H | 57 | #define _ASM_REGISTERS_H |
52 | 58 | ||
53 | #ifndef __ASSEMBLY__ | 59 | #ifndef __ASSEMBLY__ |
54 | #define __OFFSET(X) (X) | 60 | #define __OFFSET(X,N) ((X)+(N)*4) |
55 | #define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx | 61 | #define __OFFSETC(X,N) xxxxxxxxxxxxxxxxxxxxxxxx |
56 | #else | 62 | #else |
57 | #define __OFFSET(X) ((X)*4) | 63 | #define __OFFSET(X,N) ((X)+(N)*4) |
58 | #define __OFFSETC(X,N) ((X)*4+(N)) | 64 | #define __OFFSETC(X,N) ((X)+(N)) |
59 | #endif | 65 | #endif |
60 | 66 | ||
61 | /*****************************************************************************/ | 67 | /*****************************************************************************/ |
@@ -117,30 +123,13 @@ struct pt_regs { | |||
117 | 123 | ||
118 | #endif | 124 | #endif |
119 | 125 | ||
120 | #define REG_PSR __OFFSET( 0) /* Processor Status Register */ | ||
121 | #define REG_ISR __OFFSET( 1) /* Integer Status Register */ | ||
122 | #define REG_CCR __OFFSET( 2) /* Condition Code Register */ | ||
123 | #define REG_CCCR __OFFSET( 3) /* Condition Code for Conditional Insns Register */ | ||
124 | #define REG_LR __OFFSET( 4) /* Link Register */ | ||
125 | #define REG_LCR __OFFSET( 5) /* Loop Count Register */ | ||
126 | #define REG_PC __OFFSET( 6) /* Program Counter */ | ||
127 | |||
128 | #define REG__STATUS __OFFSET( 7) /* exception status */ | ||
129 | #define REG__STATUS_STEP 0x00000001 /* - reenable single stepping on return */ | 126 | #define REG__STATUS_STEP 0x00000001 /* - reenable single stepping on return */ |
130 | #define REG__STATUS_STEPPED 0x00000002 /* - single step caused exception */ | 127 | #define REG__STATUS_STEPPED 0x00000002 /* - single step caused exception */ |
131 | #define REG__STATUS_BROKE 0x00000004 /* - BREAK insn caused exception */ | 128 | #define REG__STATUS_BROKE 0x00000004 /* - BREAK insn caused exception */ |
132 | #define REG__STATUS_SYSC_ENTRY 0x40000000 /* - T on syscall entry (ptrace.c only) */ | 129 | #define REG__STATUS_SYSC_ENTRY 0x40000000 /* - T on syscall entry (ptrace.c only) */ |
133 | #define REG__STATUS_SYSC_EXIT 0x80000000 /* - T on syscall exit (ptrace.c only) */ | 130 | #define REG__STATUS_SYSC_EXIT 0x80000000 /* - T on syscall exit (ptrace.c only) */ |
134 | 131 | ||
135 | #define REG_SYSCALLNO __OFFSET( 8) /* syscall number or -1 */ | 132 | #define REG_GR(R) __OFFSET(REG_GR0, (R)) |
136 | #define REG_ORIG_GR8 __OFFSET( 9) /* saved GR8 for signal handling */ | ||
137 | #define REG_GNER0 __OFFSET(10) | ||
138 | #define REG_GNER1 __OFFSET(11) | ||
139 | #define REG_IACC0 __OFFSET(12) | ||
140 | |||
141 | #define REG_TBR __OFFSET(14) /* Trap Vector Register */ | ||
142 | #define REG_GR(R) __OFFSET((14+(R))) | ||
143 | #define REG__END REG_GR(32) | ||
144 | 133 | ||
145 | #define REG_SP REG_GR(1) | 134 | #define REG_SP REG_GR(1) |
146 | #define REG_FP REG_GR(2) | 135 | #define REG_FP REG_GR(2) |
@@ -149,27 +138,21 @@ struct pt_regs { | |||
149 | 138 | ||
150 | /*****************************************************************************/ | 139 | /*****************************************************************************/ |
151 | /* | 140 | /* |
152 | * extension tacked in front of the exception frame in debug mode | 141 | * debugging registers |
153 | */ | 142 | */ |
154 | #ifndef __ASSEMBLY__ | 143 | #ifndef __ASSEMBLY__ |
155 | 144 | ||
156 | struct pt_debug_regs | 145 | struct frv_debug_regs |
157 | { | 146 | { |
158 | unsigned long bpsr; | ||
159 | unsigned long dcr; | 147 | unsigned long dcr; |
160 | unsigned long brr; | 148 | unsigned long ibar[4] __attribute__((aligned(8))); |
161 | unsigned long nmar; | 149 | unsigned long dbar[4] __attribute__((aligned(8))); |
162 | struct pt_regs normal_regs; | 150 | unsigned long dbdr[4][4] __attribute__((aligned(8))); |
151 | unsigned long dbmr[4][4] __attribute__((aligned(8))); | ||
163 | } __attribute__((aligned(8))); | 152 | } __attribute__((aligned(8))); |
164 | 153 | ||
165 | #endif | 154 | #endif |
166 | 155 | ||
167 | #define REG_NMAR __OFFSET(-1) | ||
168 | #define REG_BRR __OFFSET(-2) | ||
169 | #define REG_DCR __OFFSET(-3) | ||
170 | #define REG_BPSR __OFFSET(-4) | ||
171 | #define REG__DEBUG_XTRA __OFFSET(4) | ||
172 | |||
173 | /*****************************************************************************/ | 156 | /*****************************************************************************/ |
174 | /* | 157 | /* |
175 | * userspace registers | 158 | * userspace registers |
@@ -223,33 +206,27 @@ struct user_context | |||
223 | void *extension; | 206 | void *extension; |
224 | } __attribute__((aligned(8))); | 207 | } __attribute__((aligned(8))); |
225 | 208 | ||
209 | struct frv_frame0 { | ||
210 | union { | ||
211 | struct pt_regs regs; | ||
212 | struct user_context uc; | ||
213 | }; | ||
214 | |||
215 | struct frv_debug_regs debug; | ||
216 | |||
217 | } __attribute__((aligned(32))); | ||
218 | |||
226 | #endif | 219 | #endif |
227 | 220 | ||
228 | #define NR_USER_INT_REGS (14 + 64) | 221 | #define __INT_GR(R) __OFFSET(__INT_GR0, (R)) |
229 | #define NR_USER_FPMEDIA_REGS (64 + 2 + 2 + 8 + 8/4 + 1) | 222 | |
230 | #define NR_USER_CONTEXT (NR_USER_INT_REGS + NR_USER_FPMEDIA_REGS + 1) | 223 | #define __FPMEDIA_FR(R) __OFFSET(__FPMEDIA_FR0, (R)) |
231 | 224 | #define __FPMEDIA_FNER(R) __OFFSET(__FPMEDIA_FNER0, (R)) | |
232 | #define USER_CONTEXT_SIZE (((NR_USER_CONTEXT + 1) & ~1) * 4) | 225 | #define __FPMEDIA_MSR(R) __OFFSET(__FPMEDIA_MSR0, (R)) |
233 | 226 | #define __FPMEDIA_ACC(R) __OFFSET(__FPMEDIA_ACC0, (R)) | |
234 | #define __THREAD_FRAME __OFFSET(0) | 227 | #define __FPMEDIA_ACCG(R) __OFFSETC(__FPMEDIA_ACCG0, (R)) |
235 | #define __THREAD_CURR __OFFSET(1) | 228 | #define __FPMEDIA_FSR(R) __OFFSET(__FPMEDIA_FSR0, (R)) |
236 | #define __THREAD_SP __OFFSET(2) | 229 | |
237 | #define __THREAD_FP __OFFSET(3) | 230 | #define __THREAD_GR(R) __OFFSET(__THREAD_GR16, (R) - 16) |
238 | #define __THREAD_LR __OFFSET(4) | ||
239 | #define __THREAD_PC __OFFSET(5) | ||
240 | #define __THREAD_GR(R) __OFFSET(6 + (R) - 16) | ||
241 | #define __THREAD_FRAME0 __OFFSET(19) | ||
242 | #define __THREAD_USER __OFFSET(19) | ||
243 | |||
244 | #define __USER_INT __OFFSET(0) | ||
245 | #define __INT_GR(R) __OFFSET(14 + (R)) | ||
246 | |||
247 | #define __USER_FPMEDIA __OFFSET(NR_USER_INT_REGS) | ||
248 | #define __FPMEDIA_FR(R) __OFFSET(NR_USER_INT_REGS + (R)) | ||
249 | #define __FPMEDIA_FNER(R) __OFFSET(NR_USER_INT_REGS + 64 + (R)) | ||
250 | #define __FPMEDIA_MSR(R) __OFFSET(NR_USER_INT_REGS + 66 + (R)) | ||
251 | #define __FPMEDIA_ACC(R) __OFFSET(NR_USER_INT_REGS + 68 + (R)) | ||
252 | #define __FPMEDIA_ACCG(R) __OFFSETC(NR_USER_INT_REGS + 76, (R)) | ||
253 | #define __FPMEDIA_FSR(R) __OFFSET(NR_USER_INT_REGS + 78 + (R)) | ||
254 | 231 | ||
255 | #endif /* _ASM_REGISTERS_H */ | 232 | #endif /* _ASM_REGISTERS_H */ |