xref: /netbsd-src/sys/arch/powerpc/oea/genassym.cf (revision 7d632b8ba47400f8dd90e2764265a9747c581aca)
1#	$NetBSD: genassym.cf,v 1.29 2021/02/24 16:42:38 thorpej 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#ifdef _KERNEL_OPT
35include "opt_ppcarch.h"
36#endif
37
38include <sys/param.h>
39include <sys/time.h>
40include <sys/mutex.h>
41include <sys/rwlock.h>
42include <sys/proc.h>
43include <sys/bitops.h>
44
45include <uvm/uvm_extern.h>
46
47include <machine/pcb.h>
48include <machine/pmap.h>
49
50include <powerpc/cpu.h>
51include <powerpc/oea/bat.h>
52include <powerpc/oea/cpufeat.h>
53
54define	FRAME_DAR	offsetof(struct ktrapframe, ktf_tf.tf_dar)
55define	FRAME_DSISR	offsetof(struct ktrapframe, ktf_tf.tf_dsisr)
56define	FRAME_VRSAVE	offsetof(struct ktrapframe, ktf_tf.tf_vrsave)
57define	FRAME_MQ	offsetof(struct ktrapframe, ktf_tf.tf_mq)
58
59ifdef PPC_OEA64
60define	PM_STEG		offsetof(struct pmap, pm_steg_table)
61else
62define	USER_SR		USER_SR
63define	KERNEL_SR	KERNEL_SR
64define	PM_SR		offsetof(struct pmap, pm_sr[0])
65define	PM_USRSR	offsetof(struct pmap, pm_sr[USER_SR])
66define	PM_KERNELSR	offsetof(struct pmap, pm_sr[KERNEL_SR])
67endif
68
69define	CI_BATTABLE	offsetof(struct cpu_info, ci_battable)
70define	CI_TEMPSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVETEMP])
71define	CI_DDBSAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEDDB])
72define	CI_DISISAVE	offsetof(struct cpu_info, ci_savearea[CI_SAVEMMU])
73
74define	CPUSAVE_R28	CPUSAVE_R28*sizeof(register_t)
75define	CPUSAVE_R29	CPUSAVE_R29*sizeof(register_t)
76define	CPUSAVE_R30	CPUSAVE_R30*sizeof(register_t)
77define	CPUSAVE_R31	CPUSAVE_R31*sizeof(register_t)
78define	CPUSAVE_DAR	CPUSAVE_DAR*sizeof(register_t)
79define	CPUSAVE_DSISR	CPUSAVE_DSISR*sizeof(register_t)
80define	CPUSAVE_SRR0	CPUSAVE_SRR0*sizeof(register_t)
81define	CPUSAVE_SRR1	CPUSAVE_SRR1*sizeof(register_t)
82
83define	OEACPU_64	OEACPU_64
84define	OEACPU_64_BRIDGE	OEACPU_64_BRIDGE
85define	OEACPU_NOBAT	OEACPU_NOBAT
86define	OEACPU_HIGHBAT	OEACPU_HIGHBAT
87define	OEACPU_601	OEACPU_601
88define	OEACPU_HIGHSPRG	OEACPU_HIGHSPRG
89define	OEACPU_ALTIVEC	OEACPU_ALTIVEC
90
91define	BAT_ADDR_SHIFT	ilog2(BAT_IDX2VA(1))
92
93define	PTE_REF		PTE_REF
94define	PTE_CHG		PTE_CHG
95define	PTE_HID		PTE_HID
96define	PTE_G		PTE_G
97
98define	FPREG_F0	offsetof(struct fpreg, fpreg[0])
99define	FPREG_F1	offsetof(struct fpreg, fpreg[1])
100define	FPREG_F2	offsetof(struct fpreg, fpreg[2])
101define	FPREG_F3	offsetof(struct fpreg, fpreg[3])
102define	FPREG_F4	offsetof(struct fpreg, fpreg[4])
103define	FPREG_F5	offsetof(struct fpreg, fpreg[5])
104define	FPREG_F6	offsetof(struct fpreg, fpreg[6])
105define	FPREG_F7	offsetof(struct fpreg, fpreg[7])
106define	FPREG_F8	offsetof(struct fpreg, fpreg[8])
107define	FPREG_F9	offsetof(struct fpreg, fpreg[9])
108define	FPREG_F10	offsetof(struct fpreg, fpreg[10])
109define	FPREG_F11	offsetof(struct fpreg, fpreg[11])
110define	FPREG_F12	offsetof(struct fpreg, fpreg[12])
111define	FPREG_F13	offsetof(struct fpreg, fpreg[13])
112define	FPREG_F14	offsetof(struct fpreg, fpreg[14])
113define	FPREG_F15	offsetof(struct fpreg, fpreg[15])
114define	FPREG_F16	offsetof(struct fpreg, fpreg[16])
115define	FPREG_F17	offsetof(struct fpreg, fpreg[17])
116define	FPREG_F18	offsetof(struct fpreg, fpreg[18])
117define	FPREG_F19	offsetof(struct fpreg, fpreg[19])
118define	FPREG_F20	offsetof(struct fpreg, fpreg[20])
119define	FPREG_F21	offsetof(struct fpreg, fpreg[21])
120define	FPREG_F22	offsetof(struct fpreg, fpreg[22])
121define	FPREG_F23	offsetof(struct fpreg, fpreg[23])
122define	FPREG_F24	offsetof(struct fpreg, fpreg[24])
123define	FPREG_F25	offsetof(struct fpreg, fpreg[25])
124define	FPREG_F26	offsetof(struct fpreg, fpreg[26])
125define	FPREG_F27	offsetof(struct fpreg, fpreg[27])
126define	FPREG_F28	offsetof(struct fpreg, fpreg[28])
127define	FPREG_F29	offsetof(struct fpreg, fpreg[29])
128define	FPREG_F30	offsetof(struct fpreg, fpreg[30])
129define	FPREG_F31	offsetof(struct fpreg, fpreg[31])
130define	FPREG_FPSCR	offsetof(struct fpreg, fpscr)
131
132define	VREG_V0		offsetof(struct vreg, vreg[0][0])
133define	VREG_V1		offsetof(struct vreg, vreg[1][0])
134define	VREG_V2		offsetof(struct vreg, vreg[2][0])
135define	VREG_V3		offsetof(struct vreg, vreg[3][0])
136define	VREG_V4		offsetof(struct vreg, vreg[4][0])
137define	VREG_V5		offsetof(struct vreg, vreg[5][0])
138define	VREG_V6		offsetof(struct vreg, vreg[6][0])
139define	VREG_V7		offsetof(struct vreg, vreg[7][0])
140define	VREG_V8		offsetof(struct vreg, vreg[8][0])
141define	VREG_V9		offsetof(struct vreg, vreg[9][0])
142define	VREG_V10	offsetof(struct vreg, vreg[10][0])
143define	VREG_V11	offsetof(struct vreg, vreg[11][0])
144define	VREG_V12	offsetof(struct vreg, vreg[12][0])
145define	VREG_V13	offsetof(struct vreg, vreg[13][0])
146define	VREG_V14	offsetof(struct vreg, vreg[14][0])
147define	VREG_V15	offsetof(struct vreg, vreg[15][0])
148define	VREG_V16	offsetof(struct vreg, vreg[16][0])
149define	VREG_V17	offsetof(struct vreg, vreg[17][0])
150define	VREG_V18	offsetof(struct vreg, vreg[18][0])
151define	VREG_V19	offsetof(struct vreg, vreg[19][0])
152define	VREG_V20	offsetof(struct vreg, vreg[20][0])
153define	VREG_V21	offsetof(struct vreg, vreg[21][0])
154define	VREG_V22	offsetof(struct vreg, vreg[22][0])
155define	VREG_V23	offsetof(struct vreg, vreg[23][0])
156define	VREG_V24	offsetof(struct vreg, vreg[24][0])
157define	VREG_V25	offsetof(struct vreg, vreg[25][0])
158define	VREG_V26	offsetof(struct vreg, vreg[26][0])
159define	VREG_V27	offsetof(struct vreg, vreg[27][0])
160define	VREG_V28	offsetof(struct vreg, vreg[28][0])
161define	VREG_V29	offsetof(struct vreg, vreg[29][0])
162define	VREG_V30	offsetof(struct vreg, vreg[30][0])
163define	VREG_V31	offsetof(struct vreg, vreg[31][0])
164define	VREG_VRSAVE	offsetof(struct vreg, vrsave)
165define	VREG_VSCR	offsetof(struct vreg, vscr)
166