1# $NetBSD: genassym.cf,v 1.17 2011/01/18 01:02:55 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 34include "opt_ppcarch.h" 35 36quote #define __MUTEX_PRIVATE 37quote #define __RWLOCK_PRIVATE 38 39include <sys/param.h> 40include <sys/time.h> 41include <sys/mutex.h> 42include <sys/rwlock.h> 43include <sys/proc.h> 44 45include <uvm/uvm_extern.h> 46 47include <machine/pcb.h> 48include <machine/pmap.h> 49 50include <powerpc/cpu.h> 51include <powerpc/oea/cpufeat.h> 52 53define FRAMELEN FRAMELEN 54define FRAME_TF offsetof(struct ktrapframe, ktf_tf) 55define FRAME_R0 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[0]) 56define FRAME_R1 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[1]) 57define FRAME_R2 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[2]) 58define FRAME_R3 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[3]) 59define FRAME_R4 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[4]) 60define FRAME_R5 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[5]) 61define FRAME_R6 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[6]) 62define FRAME_R7 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[7]) 63define FRAME_R8 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[8]) 64define FRAME_R9 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[9]) 65define FRAME_R10 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[10]) 66define FRAME_R11 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[11]) 67define FRAME_R12 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[12]) 68define FRAME_R13 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[13]) 69define FRAME_R14 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[14]) 70define FRAME_R15 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[15]) 71define FRAME_R16 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[16]) 72define FRAME_R17 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[17]) 73define FRAME_R18 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[18]) 74define FRAME_R19 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[19]) 75define FRAME_R20 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[20]) 76define FRAME_R21 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[21]) 77define FRAME_R22 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[22]) 78define FRAME_R23 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[23]) 79define FRAME_R24 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[24]) 80define FRAME_R25 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[25]) 81define FRAME_R26 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[26]) 82define FRAME_R27 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[27]) 83define FRAME_R28 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[28]) 84define FRAME_R29 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[29]) 85define FRAME_R30 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[30]) 86define FRAME_R31 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[31]) 87define FRAME_LR offsetof(struct ktrapframe, ktf_tf.tf_lr) 88define FRAME_CR offsetof(struct ktrapframe, ktf_tf.tf_cr) 89define FRAME_CTR offsetof(struct ktrapframe, ktf_tf.tf_ctr) 90define FRAME_XER offsetof(struct ktrapframe, ktf_tf.tf_xer) 91define FRAME_CF offsetof(struct ktrapframe, ktf_tf.tf_cf) 92define FRAME_SRR0 offsetof(struct ktrapframe, ktf_tf.tf_srr0) 93define FRAME_SRR1 offsetof(struct ktrapframe, ktf_tf.tf_srr1) 94define FRAME_IDEPTH offsetof(struct ktrapframe, ktf_tf.tf_idepth) 95define FRAME_DAR offsetof(struct ktrapframe, ktf_tf.tf_dar) 96define FRAME_DSISR offsetof(struct ktrapframe, ktf_tf.tf_dsisr) 97define FRAME_EXC offsetof(struct ktrapframe, ktf_tf.tf_exc) 98define FRAME_VRSAVE offsetof(struct ktrapframe, ktf_tf.tf_vrsave) 99define FRAME_MQ offsetof(struct ktrapframe, ktf_tf.tf_mq) 100 101ifdef PPC_OEA64 102define PM_STEG offsetof(struct pmap, pm_steg_table) 103else 104define PM_SR offsetof(struct pmap, pm_sr[0]) 105define PM_USRSR offsetof(struct pmap, pm_sr[USER_SR]) 106define PM_KERNELSR offsetof(struct pmap, pm_sr[KERNEL_SR]) 107endif 108 109define CALLFRAMELEN CALLFRAMELEN 110define CFRAME_SP offsetof(struct callframe, cf_sp) 111define CFRAME_LR offsetof(struct callframe, cf_lr) 112define CFRAME_R30 offsetof(struct callframe, cf_r30) 113define CFRAME_R31 offsetof(struct callframe, cf_r31) 114 115define SFRAMELEN SFRAMELEN 116define SFRAME_SP offsetof(struct switchframe, sf_sp) 117define SFRAME_LR offsetof(struct switchframe, sf_lr) 118define SFRAME_USER_SR offsetof(struct switchframe, sf_user_sr) 119define SFRAME_CR offsetof(struct switchframe, sf_cr) 120define SFRAME_R2 offsetof(struct switchframe, sf_fixreg2) 121define SFRAME_R13 offsetof(struct switchframe, sf_fixreg[0]) 122define SFRAME_R14 offsetof(struct switchframe, sf_fixreg[1]) 123define SFRAME_R15 offsetof(struct switchframe, sf_fixreg[2]) 124define SFRAME_R16 offsetof(struct switchframe, sf_fixreg[3]) 125define SFRAME_R17 offsetof(struct switchframe, sf_fixreg[4]) 126define SFRAME_R18 offsetof(struct switchframe, sf_fixreg[5]) 127define SFRAME_R19 offsetof(struct switchframe, sf_fixreg[6]) 128define SFRAME_R20 offsetof(struct switchframe, sf_fixreg[7]) 129define SFRAME_R21 offsetof(struct switchframe, sf_fixreg[8]) 130define SFRAME_R22 offsetof(struct switchframe, sf_fixreg[9]) 131define SFRAME_R23 offsetof(struct switchframe, sf_fixreg[10]) 132define SFRAME_R24 offsetof(struct switchframe, sf_fixreg[11]) 133define SFRAME_R25 offsetof(struct switchframe, sf_fixreg[12]) 134define SFRAME_R26 offsetof(struct switchframe, sf_fixreg[13]) 135define SFRAME_R27 offsetof(struct switchframe, sf_fixreg[14]) 136define SFRAME_R28 offsetof(struct switchframe, sf_fixreg[15]) 137define SFRAME_R29 offsetof(struct switchframe, sf_fixreg[16]) 138define SFRAME_R30 offsetof(struct switchframe, sf_fixreg[17]) 139define SFRAME_R31 offsetof(struct switchframe, sf_fixreg[18]) 140 141define PCB_PM offsetof(struct pcb, pcb_pm) 142define PCB_SP offsetof(struct pcb, pcb_sp) 143define PCB_ONFAULT offsetof(struct pcb, pcb_onfault) 144 145define FPREG_F0 offsetof(struct fpreg, fpreg[0]) 146define FPREG_F1 offsetof(struct fpreg, fpreg[1]) 147define FPREG_F2 offsetof(struct fpreg, fpreg[2]) 148define FPREG_F3 offsetof(struct fpreg, fpreg[3]) 149define FPREG_F4 offsetof(struct fpreg, fpreg[4]) 150define FPREG_F5 offsetof(struct fpreg, fpreg[5]) 151define FPREG_F6 offsetof(struct fpreg, fpreg[6]) 152define FPREG_F7 offsetof(struct fpreg, fpreg[7]) 153define FPREG_F8 offsetof(struct fpreg, fpreg[8]) 154define FPREG_F9 offsetof(struct fpreg, fpreg[9]) 155define FPREG_F10 offsetof(struct fpreg, fpreg[10]) 156define FPREG_F11 offsetof(struct fpreg, fpreg[11]) 157define FPREG_F12 offsetof(struct fpreg, fpreg[12]) 158define FPREG_F13 offsetof(struct fpreg, fpreg[13]) 159define FPREG_F14 offsetof(struct fpreg, fpreg[14]) 160define FPREG_F15 offsetof(struct fpreg, fpreg[15]) 161define FPREG_F16 offsetof(struct fpreg, fpreg[16]) 162define FPREG_F17 offsetof(struct fpreg, fpreg[17]) 163define FPREG_F18 offsetof(struct fpreg, fpreg[18]) 164define FPREG_F19 offsetof(struct fpreg, fpreg[19]) 165define FPREG_F20 offsetof(struct fpreg, fpreg[20]) 166define FPREG_F21 offsetof(struct fpreg, fpreg[21]) 167define FPREG_F22 offsetof(struct fpreg, fpreg[22]) 168define FPREG_F23 offsetof(struct fpreg, fpreg[23]) 169define FPREG_F24 offsetof(struct fpreg, fpreg[24]) 170define FPREG_F25 offsetof(struct fpreg, fpreg[25]) 171define FPREG_F26 offsetof(struct fpreg, fpreg[26]) 172define FPREG_F27 offsetof(struct fpreg, fpreg[27]) 173define FPREG_F28 offsetof(struct fpreg, fpreg[28]) 174define FPREG_F29 offsetof(struct fpreg, fpreg[29]) 175define FPREG_F30 offsetof(struct fpreg, fpreg[30]) 176define FPREG_F31 offsetof(struct fpreg, fpreg[31]) 177define FPREG_FPSCR offsetof(struct fpreg, fpscr) 178 179define VREG_V0 offsetof(struct vreg, vreg[0][0]) 180define VREG_V1 offsetof(struct vreg, vreg[1][0]) 181define VREG_V2 offsetof(struct vreg, vreg[2][0]) 182define VREG_V3 offsetof(struct vreg, vreg[3][0]) 183define VREG_V4 offsetof(struct vreg, vreg[4][0]) 184define VREG_V5 offsetof(struct vreg, vreg[5][0]) 185define VREG_V6 offsetof(struct vreg, vreg[6][0]) 186define VREG_V7 offsetof(struct vreg, vreg[7][0]) 187define VREG_V8 offsetof(struct vreg, vreg[8][0]) 188define VREG_V9 offsetof(struct vreg, vreg[9][0]) 189define VREG_V10 offsetof(struct vreg, vreg[10][0]) 190define VREG_V11 offsetof(struct vreg, vreg[11][0]) 191define VREG_V12 offsetof(struct vreg, vreg[12][0]) 192define VREG_V13 offsetof(struct vreg, vreg[13][0]) 193define VREG_V14 offsetof(struct vreg, vreg[14][0]) 194define VREG_V15 offsetof(struct vreg, vreg[15][0]) 195define VREG_V16 offsetof(struct vreg, vreg[16][0]) 196define VREG_V17 offsetof(struct vreg, vreg[17][0]) 197define VREG_V18 offsetof(struct vreg, vreg[18][0]) 198define VREG_V19 offsetof(struct vreg, vreg[19][0]) 199define VREG_V20 offsetof(struct vreg, vreg[20][0]) 200define VREG_V21 offsetof(struct vreg, vreg[21][0]) 201define VREG_V22 offsetof(struct vreg, vreg[22][0]) 202define VREG_V23 offsetof(struct vreg, vreg[23][0]) 203define VREG_V24 offsetof(struct vreg, vreg[24][0]) 204define VREG_V25 offsetof(struct vreg, vreg[25][0]) 205define VREG_V26 offsetof(struct vreg, vreg[26][0]) 206define VREG_V27 offsetof(struct vreg, vreg[27][0]) 207define VREG_V28 offsetof(struct vreg, vreg[28][0]) 208define VREG_V29 offsetof(struct vreg, vreg[29][0]) 209define VREG_V30 offsetof(struct vreg, vreg[30][0]) 210define VREG_V31 offsetof(struct vreg, vreg[31][0]) 211define VREG_VRSAVE offsetof(struct vreg, vrsave) 212define VREG_VSCR offsetof(struct vreg, vscr) 213 214define L_PCB offsetof(struct lwp, l_addr) 215define L_CPU offsetof(struct lwp, l_cpu) 216define L_MD_UTF offsetof(struct lwp, l_md.md_utf) 217define L_PROC offsetof(struct lwp, l_proc) 218 219define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall) 220 221define CI_SIZE sizeof(struct cpu_info) 222define CI_CURLWP offsetof(struct cpu_info, ci_curlwp) 223define CI_CURPCB offsetof(struct cpu_info, ci_curpcb) 224define CI_CURPM offsetof(struct cpu_info, ci_curpm) 225define CI_ASTPENDING offsetof(struct cpu_info, ci_astpending) 226define CI_WANT_RESCHED offsetof(struct cpu_info, ci_want_resched) 227define CI_CPL offsetof(struct cpu_info, ci_cpl) 228define CI_IDEPTH offsetof(struct cpu_info, ci_idepth) 229define CI_TEMPSAVE offsetof(struct cpu_info, ci_tempsave) 230define CI_DDBSAVE offsetof(struct cpu_info, ci_ddbsave) 231define CI_IPKDBSAVE offsetof(struct cpu_info, ci_ipkdbsave) 232define CI_DISISAVE offsetof(struct cpu_info, ci_disisave) 233define CI_IDLESPIN offsetof(struct cpu_info, ci_idlespin) 234 235define CPUSAVE_R28 CPUSAVE_R28*sizeof(register_t) 236define CPUSAVE_R29 CPUSAVE_R29*sizeof(register_t) 237define CPUSAVE_R30 CPUSAVE_R30*sizeof(register_t) 238define CPUSAVE_R31 CPUSAVE_R31*sizeof(register_t) 239define CPUSAVE_DAR CPUSAVE_DAR*sizeof(register_t) 240define CPUSAVE_DSISR CPUSAVE_DSISR*sizeof(register_t) 241define CPUSAVE_SRR0 CPUSAVE_SRR0*sizeof(register_t) 242define CPUSAVE_SRR1 CPUSAVE_SRR1*sizeof(register_t) 243 244define FB_PC offsetof(struct faultbuf, fb_pc) 245define FB_SP offsetof(struct faultbuf, fb_sp) 246define FB_R2 offsetof(struct faultbuf, fb_r2) 247define FB_CR offsetof(struct faultbuf, fb_cr) 248define FB_R13 offsetof(struct faultbuf, fb_fixreg[0]) 249define FB_R14 offsetof(struct faultbuf, fb_fixreg[1]) 250define FB_R15 offsetof(struct faultbuf, fb_fixreg[2]) 251define FB_R16 offsetof(struct faultbuf, fb_fixreg[3]) 252define FB_R17 offsetof(struct faultbuf, fb_fixreg[4]) 253define FB_R18 offsetof(struct faultbuf, fb_fixreg[5]) 254define FB_R19 offsetof(struct faultbuf, fb_fixreg[6]) 255define FB_R20 offsetof(struct faultbuf, fb_fixreg[7]) 256define FB_R21 offsetof(struct faultbuf, fb_fixreg[8]) 257define FB_R22 offsetof(struct faultbuf, fb_fixreg[9]) 258define FB_R23 offsetof(struct faultbuf, fb_fixreg[10]) 259define FB_R24 offsetof(struct faultbuf, fb_fixreg[11]) 260define FB_R25 offsetof(struct faultbuf, fb_fixreg[12]) 261define FB_R26 offsetof(struct faultbuf, fb_fixreg[13]) 262define FB_R27 offsetof(struct faultbuf, fb_fixreg[14]) 263define FB_R28 offsetof(struct faultbuf, fb_fixreg[15]) 264define FB_R29 offsetof(struct faultbuf, fb_fixreg[16]) 265define FB_R30 offsetof(struct faultbuf, fb_fixreg[17]) 266define FB_R31 offsetof(struct faultbuf, fb_fixreg[18]) 267 268define CACHELINESIZE CACHELINESIZE 269 270define CPU_CI offsetof(struct cpu_info, ci_ci) 271 272define OEACPU_64 OEACPU_64 273define OEACPU_64_BRIDGE OEACPU_64_BRIDGE 274define OEACPU_NOBAT OEACPU_NOBAT 275define OEACPU_HIGHBAT OEACPU_HIGHBAT 276define OEACPU_601 OEACPU_601 277define OEACPU_HIGHSPRG OEACPU_HIGHSPRG 278define OEACPU_ALTIVEC OEACPU_ALTIVEC 279 280ifdef __HAVE_MUTEX_STUBS 281define __HAVE_MUTEX_STUBS __HAVE_MUTEX_STUBS 282endif 283ifdef __HAVE_MUTEX_SPIN_STUBS 284define __HAVE_MUTEX_SPIN_STUBS __HAVE_MUTEX_SPIN_STUBS 285endif 286define MTX_OWNER offsetof(struct kmutex, mtx_owner) 287define MTX_LOCK offsetof(struct kmutex, mtx_lock) 288define MTX_IPL offsetof(struct kmutex, mtx_ipl) 289 290ifdef __HAVE_RW_STUBS 291define __HAVE_RW_STUBS __HAVE_RW_STUBS 292endif 293define RW_OWNER offsetof(struct krwlock, rw_owner) 294define RW_WRITE_LOCKED RW_WRITE_LOCKED 295define RW_READ_INCR RW_READ_INCR 296define RW_READER RW_READER 297