genassym.cf revision 1.18 1 # $NetBSD: genassym.cf,v 1.18 2011/06/05 16:52:25 matt Exp $
2
3 #
4 # Copyright (C) 1995, 1996 Wolfgang Solfrank.
5 # Copyright (C) 1995, 1996 TooLs GmbH.
6 # All rights reserved.
7 #
8 # Redistribution and use in source and binary forms, with or without
9 # modification, are permitted provided that the following conditions
10 # are met:
11 # 1. Redistributions of source code must retain the above copyright
12 # notice, this list of conditions and the following disclaimer.
13 # 2. Redistributions in binary form must reproduce the above copyright
14 # notice, this list of conditions and the following disclaimer in the
15 # documentation and/or other materials provided with the distribution.
16 # 3. All advertising materials mentioning features or use of this software
17 # must display the following acknowledgement:
18 # This product includes software developed by TooLs GmbH.
19 # 4. The name of TooLs GmbH may not be used to endorse or promote products
20 # derived from this software without specific prior written permission.
21 #
22 # THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
23 # IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
24 # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
25 # IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
27 # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
28 # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29 # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
30 # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
31 # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32 #
33
34 include "opt_ppcarch.h"
35
36 quote #define __MUTEX_PRIVATE
37 quote #define __RWLOCK_PRIVATE
38
39 include <sys/param.h>
40 include <sys/time.h>
41 include <sys/mutex.h>
42 include <sys/rwlock.h>
43 include <sys/proc.h>
44 include <sys/bitops.h>
45
46 include <uvm/uvm_extern.h>
47
48 include <machine/pcb.h>
49 include <machine/pmap.h>
50
51 include <powerpc/cpu.h>
52 include <powerpc/oea/cpufeat.h>
53
54 define FRAMELEN FRAMELEN
55 define FRAME_TF offsetof(struct ktrapframe, ktf_tf)
56 define FRAME_R0 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[0])
57 define FRAME_R1 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[1])
58 define FRAME_R2 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[2])
59 define FRAME_R3 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[3])
60 define FRAME_R4 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[4])
61 define FRAME_R5 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[5])
62 define FRAME_R6 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[6])
63 define FRAME_R7 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[7])
64 define FRAME_R8 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[8])
65 define FRAME_R9 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[9])
66 define FRAME_R10 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[10])
67 define FRAME_R11 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[11])
68 define FRAME_R12 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[12])
69 define FRAME_R13 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[13])
70 define FRAME_R14 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[14])
71 define FRAME_R15 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[15])
72 define FRAME_R16 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[16])
73 define FRAME_R17 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[17])
74 define FRAME_R18 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[18])
75 define FRAME_R19 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[19])
76 define FRAME_R20 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[20])
77 define FRAME_R21 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[21])
78 define FRAME_R22 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[22])
79 define FRAME_R23 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[23])
80 define FRAME_R24 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[24])
81 define FRAME_R25 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[25])
82 define FRAME_R26 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[26])
83 define FRAME_R27 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[27])
84 define FRAME_R28 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[28])
85 define FRAME_R29 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[29])
86 define FRAME_R30 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[30])
87 define FRAME_R31 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[31])
88 define FRAME_LR offsetof(struct ktrapframe, ktf_tf.tf_lr)
89 define FRAME_CR offsetof(struct ktrapframe, ktf_tf.tf_cr)
90 define FRAME_CTR offsetof(struct ktrapframe, ktf_tf.tf_ctr)
91 define FRAME_XER offsetof(struct ktrapframe, ktf_tf.tf_xer)
92 define FRAME_CF offsetof(struct ktrapframe, ktf_tf.tf_cf)
93 define FRAME_SRR0 offsetof(struct ktrapframe, ktf_tf.tf_srr0)
94 define FRAME_SRR1 offsetof(struct ktrapframe, ktf_tf.tf_srr1)
95 define FRAME_IDEPTH offsetof(struct ktrapframe, ktf_tf.tf_idepth)
96 define FRAME_DAR offsetof(struct ktrapframe, ktf_tf.tf_dar)
97 define FRAME_DSISR offsetof(struct ktrapframe, ktf_tf.tf_dsisr)
98 define FRAME_EXC offsetof(struct ktrapframe, ktf_tf.tf_exc)
99 define FRAME_VRSAVE offsetof(struct ktrapframe, ktf_tf.tf_vrsave)
100 define FRAME_MQ offsetof(struct ktrapframe, ktf_tf.tf_mq)
101
102 ifdef PPC_OEA64
103 define PM_STEG offsetof(struct pmap, pm_steg_table)
104 else
105 define PM_SR offsetof(struct pmap, pm_sr[0])
106 define PM_USRSR offsetof(struct pmap, pm_sr[USER_SR])
107 define PM_KERNELSR offsetof(struct pmap, pm_sr[KERNEL_SR])
108 endif
109
110 define CALLFRAMELEN CALLFRAMELEN
111 define CFRAME_SP offsetof(struct callframe, cf_sp)
112 define CFRAME_LR offsetof(struct callframe, cf_lr)
113 define CFRAME_R30 offsetof(struct callframe, cf_r30)
114 define CFRAME_R31 offsetof(struct callframe, cf_r31)
115
116 define SFRAMELEN SFRAMELEN
117 define SFRAME_SP offsetof(struct switchframe, sf_sp)
118 define SFRAME_LR offsetof(struct switchframe, sf_lr)
119 define SFRAME_USER_SR offsetof(struct switchframe, sf_user_sr)
120 define SFRAME_CR offsetof(struct switchframe, sf_cr)
121 define SFRAME_R2 offsetof(struct switchframe, sf_fixreg2)
122 define SFRAME_R13 offsetof(struct switchframe, sf_fixreg[0])
123 define SFRAME_R14 offsetof(struct switchframe, sf_fixreg[1])
124 define SFRAME_R15 offsetof(struct switchframe, sf_fixreg[2])
125 define SFRAME_R16 offsetof(struct switchframe, sf_fixreg[3])
126 define SFRAME_R17 offsetof(struct switchframe, sf_fixreg[4])
127 define SFRAME_R18 offsetof(struct switchframe, sf_fixreg[5])
128 define SFRAME_R19 offsetof(struct switchframe, sf_fixreg[6])
129 define SFRAME_R20 offsetof(struct switchframe, sf_fixreg[7])
130 define SFRAME_R21 offsetof(struct switchframe, sf_fixreg[8])
131 define SFRAME_R22 offsetof(struct switchframe, sf_fixreg[9])
132 define SFRAME_R23 offsetof(struct switchframe, sf_fixreg[10])
133 define SFRAME_R24 offsetof(struct switchframe, sf_fixreg[11])
134 define SFRAME_R25 offsetof(struct switchframe, sf_fixreg[12])
135 define SFRAME_R26 offsetof(struct switchframe, sf_fixreg[13])
136 define SFRAME_R27 offsetof(struct switchframe, sf_fixreg[14])
137 define SFRAME_R28 offsetof(struct switchframe, sf_fixreg[15])
138 define SFRAME_R29 offsetof(struct switchframe, sf_fixreg[16])
139 define SFRAME_R30 offsetof(struct switchframe, sf_fixreg[17])
140 define SFRAME_R31 offsetof(struct switchframe, sf_fixreg[18])
141
142 define PCB_PM offsetof(struct pcb, pcb_pm)
143 define PCB_SP offsetof(struct pcb, pcb_sp)
144 define PCB_ONFAULT offsetof(struct pcb, pcb_onfault)
145
146 define FPREG_F0 offsetof(struct fpreg, fpreg[0])
147 define FPREG_F1 offsetof(struct fpreg, fpreg[1])
148 define FPREG_F2 offsetof(struct fpreg, fpreg[2])
149 define FPREG_F3 offsetof(struct fpreg, fpreg[3])
150 define FPREG_F4 offsetof(struct fpreg, fpreg[4])
151 define FPREG_F5 offsetof(struct fpreg, fpreg[5])
152 define FPREG_F6 offsetof(struct fpreg, fpreg[6])
153 define FPREG_F7 offsetof(struct fpreg, fpreg[7])
154 define FPREG_F8 offsetof(struct fpreg, fpreg[8])
155 define FPREG_F9 offsetof(struct fpreg, fpreg[9])
156 define FPREG_F10 offsetof(struct fpreg, fpreg[10])
157 define FPREG_F11 offsetof(struct fpreg, fpreg[11])
158 define FPREG_F12 offsetof(struct fpreg, fpreg[12])
159 define FPREG_F13 offsetof(struct fpreg, fpreg[13])
160 define FPREG_F14 offsetof(struct fpreg, fpreg[14])
161 define FPREG_F15 offsetof(struct fpreg, fpreg[15])
162 define FPREG_F16 offsetof(struct fpreg, fpreg[16])
163 define FPREG_F17 offsetof(struct fpreg, fpreg[17])
164 define FPREG_F18 offsetof(struct fpreg, fpreg[18])
165 define FPREG_F19 offsetof(struct fpreg, fpreg[19])
166 define FPREG_F20 offsetof(struct fpreg, fpreg[20])
167 define FPREG_F21 offsetof(struct fpreg, fpreg[21])
168 define FPREG_F22 offsetof(struct fpreg, fpreg[22])
169 define FPREG_F23 offsetof(struct fpreg, fpreg[23])
170 define FPREG_F24 offsetof(struct fpreg, fpreg[24])
171 define FPREG_F25 offsetof(struct fpreg, fpreg[25])
172 define FPREG_F26 offsetof(struct fpreg, fpreg[26])
173 define FPREG_F27 offsetof(struct fpreg, fpreg[27])
174 define FPREG_F28 offsetof(struct fpreg, fpreg[28])
175 define FPREG_F29 offsetof(struct fpreg, fpreg[29])
176 define FPREG_F30 offsetof(struct fpreg, fpreg[30])
177 define FPREG_F31 offsetof(struct fpreg, fpreg[31])
178 define FPREG_FPSCR offsetof(struct fpreg, fpscr)
179
180 define VREG_V0 offsetof(struct vreg, vreg[0][0])
181 define VREG_V1 offsetof(struct vreg, vreg[1][0])
182 define VREG_V2 offsetof(struct vreg, vreg[2][0])
183 define VREG_V3 offsetof(struct vreg, vreg[3][0])
184 define VREG_V4 offsetof(struct vreg, vreg[4][0])
185 define VREG_V5 offsetof(struct vreg, vreg[5][0])
186 define VREG_V6 offsetof(struct vreg, vreg[6][0])
187 define VREG_V7 offsetof(struct vreg, vreg[7][0])
188 define VREG_V8 offsetof(struct vreg, vreg[8][0])
189 define VREG_V9 offsetof(struct vreg, vreg[9][0])
190 define VREG_V10 offsetof(struct vreg, vreg[10][0])
191 define VREG_V11 offsetof(struct vreg, vreg[11][0])
192 define VREG_V12 offsetof(struct vreg, vreg[12][0])
193 define VREG_V13 offsetof(struct vreg, vreg[13][0])
194 define VREG_V14 offsetof(struct vreg, vreg[14][0])
195 define VREG_V15 offsetof(struct vreg, vreg[15][0])
196 define VREG_V16 offsetof(struct vreg, vreg[16][0])
197 define VREG_V17 offsetof(struct vreg, vreg[17][0])
198 define VREG_V18 offsetof(struct vreg, vreg[18][0])
199 define VREG_V19 offsetof(struct vreg, vreg[19][0])
200 define VREG_V20 offsetof(struct vreg, vreg[20][0])
201 define VREG_V21 offsetof(struct vreg, vreg[21][0])
202 define VREG_V22 offsetof(struct vreg, vreg[22][0])
203 define VREG_V23 offsetof(struct vreg, vreg[23][0])
204 define VREG_V24 offsetof(struct vreg, vreg[24][0])
205 define VREG_V25 offsetof(struct vreg, vreg[25][0])
206 define VREG_V26 offsetof(struct vreg, vreg[26][0])
207 define VREG_V27 offsetof(struct vreg, vreg[27][0])
208 define VREG_V28 offsetof(struct vreg, vreg[28][0])
209 define VREG_V29 offsetof(struct vreg, vreg[29][0])
210 define VREG_V30 offsetof(struct vreg, vreg[30][0])
211 define VREG_V31 offsetof(struct vreg, vreg[31][0])
212 define VREG_VRSAVE offsetof(struct vreg, vrsave)
213 define VREG_VSCR offsetof(struct vreg, vscr)
214
215 define L_PCB offsetof(struct lwp, l_addr)
216 define L_CPU offsetof(struct lwp, l_cpu)
217 define L_MD_ASTPENDING offsetof(struct lwp, l_md.md_astpending)
218 define L_MD_UTF offsetof(struct lwp, l_md.md_utf)
219 define L_PROC offsetof(struct lwp, l_proc)
220
221 define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall)
222
223 define CI_SIZE sizeof(struct cpu_info)
224 define CI_CURLWP offsetof(struct cpu_info, ci_curlwp)
225 define CI_CURPCB offsetof(struct cpu_info, ci_curpcb)
226 define CI_CURPM offsetof(struct cpu_info, ci_curpm)
227 define CI_WANT_RESCHED offsetof(struct cpu_info, ci_want_resched)
228 define CI_CPL offsetof(struct cpu_info, ci_cpl)
229 define CI_IDEPTH offsetof(struct cpu_info, ci_idepth)
230 define CI_TEMPSAVE offsetof(struct cpu_info, ci_tempsave)
231 define CI_DDBSAVE offsetof(struct cpu_info, ci_ddbsave)
232 define CI_IPKDBSAVE offsetof(struct cpu_info, ci_ipkdbsave)
233 define CI_DISISAVE offsetof(struct cpu_info, ci_disisave)
234 define CI_IDLESPIN offsetof(struct cpu_info, ci_idlespin)
235
236 define CPUSAVE_R28 CPUSAVE_R28*sizeof(register_t)
237 define CPUSAVE_R29 CPUSAVE_R29*sizeof(register_t)
238 define CPUSAVE_R30 CPUSAVE_R30*sizeof(register_t)
239 define CPUSAVE_R31 CPUSAVE_R31*sizeof(register_t)
240 define CPUSAVE_DAR CPUSAVE_DAR*sizeof(register_t)
241 define CPUSAVE_DSISR CPUSAVE_DSISR*sizeof(register_t)
242 define CPUSAVE_SRR0 CPUSAVE_SRR0*sizeof(register_t)
243 define CPUSAVE_SRR1 CPUSAVE_SRR1*sizeof(register_t)
244
245 define FB_PC offsetof(struct faultbuf, fb_pc)
246 define FB_SP offsetof(struct faultbuf, fb_sp)
247 define FB_R2 offsetof(struct faultbuf, fb_r2)
248 define FB_CR offsetof(struct faultbuf, fb_cr)
249 define FB_R13 offsetof(struct faultbuf, fb_fixreg[0])
250 define FB_R14 offsetof(struct faultbuf, fb_fixreg[1])
251 define FB_R15 offsetof(struct faultbuf, fb_fixreg[2])
252 define FB_R16 offsetof(struct faultbuf, fb_fixreg[3])
253 define FB_R17 offsetof(struct faultbuf, fb_fixreg[4])
254 define FB_R18 offsetof(struct faultbuf, fb_fixreg[5])
255 define FB_R19 offsetof(struct faultbuf, fb_fixreg[6])
256 define FB_R20 offsetof(struct faultbuf, fb_fixreg[7])
257 define FB_R21 offsetof(struct faultbuf, fb_fixreg[8])
258 define FB_R22 offsetof(struct faultbuf, fb_fixreg[9])
259 define FB_R23 offsetof(struct faultbuf, fb_fixreg[10])
260 define FB_R24 offsetof(struct faultbuf, fb_fixreg[11])
261 define FB_R25 offsetof(struct faultbuf, fb_fixreg[12])
262 define FB_R26 offsetof(struct faultbuf, fb_fixreg[13])
263 define FB_R27 offsetof(struct faultbuf, fb_fixreg[14])
264 define FB_R28 offsetof(struct faultbuf, fb_fixreg[15])
265 define FB_R29 offsetof(struct faultbuf, fb_fixreg[16])
266 define FB_R30 offsetof(struct faultbuf, fb_fixreg[17])
267 define FB_R31 offsetof(struct faultbuf, fb_fixreg[18])
268
269 define CACHELINESIZE CACHELINESIZE
270
271 define CPU_CI offsetof(struct cpu_info, ci_ci)
272
273 define OEACPU_64 OEACPU_64
274 define OEACPU_64_BRIDGE OEACPU_64_BRIDGE
275 define OEACPU_NOBAT OEACPU_NOBAT
276 define OEACPU_HIGHBAT OEACPU_HIGHBAT
277 define OEACPU_601 OEACPU_601
278 define OEACPU_HIGHSPRG OEACPU_HIGHSPRG
279 define OEACPU_ALTIVEC OEACPU_ALTIVEC
280
281 ifdef __HAVE_MUTEX_STUBS
282 define __HAVE_MUTEX_STUBS __HAVE_MUTEX_STUBS
283 endif
284 ifdef __HAVE_MUTEX_SPIN_STUBS
285 define __HAVE_MUTEX_SPIN_STUBS __HAVE_MUTEX_SPIN_STUBS
286 endif
287 define MTX_OWNER offsetof(struct kmutex, mtx_owner)
288 define MTX_LOCK offsetof(struct kmutex, mtx_lock)
289 define MTX_IPL offsetof(struct kmutex, mtx_ipl)
290
291 ifdef __HAVE_RW_STUBS
292 define __HAVE_RW_STUBS __HAVE_RW_STUBS
293 endif
294 define RW_OWNER offsetof(struct krwlock, rw_owner)
295 define RW_WRITE_LOCKED RW_WRITE_LOCKED
296 define RW_READ_INCR RW_READ_INCR
297 define RW_READER RW_READER
298
299 define MSR_PR 31-ilog2(PSL_PR)
300