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