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