1# $NetBSD: genassym.cf,v 1.18 2011/01/18 01:02:54 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 34quote #define __MUTEX_PRIVATE 35quote #define __RWLOCK_PRIVATE 36 37include <sys/param.h> 38include <sys/time.h> 39include <sys/proc.h> 40include <sys/bitops.h> 41 42include <uvm/uvm_extern.h> 43 44include <machine/pcb.h> 45include <machine/pmap.h> 46 47define FRAMELEN FRAMELEN 48define FRAME_TF offsetof(struct ktrapframe, ktf_tf) 49define FRAME_R0 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[0]) 50define FRAME_R1 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[1]) 51define FRAME_R2 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[2]) 52define FRAME_R3 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[3]) 53define FRAME_R4 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[4]) 54define FRAME_R5 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[5]) 55define FRAME_R6 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[6]) 56define FRAME_R7 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[7]) 57define FRAME_R8 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[8]) 58define FRAME_R9 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[9]) 59define FRAME_R10 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[10]) 60define FRAME_R11 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[11]) 61define FRAME_R12 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[12]) 62define FRAME_R13 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[13]) 63define FRAME_R14 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[14]) 64define FRAME_R15 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[15]) 65define FRAME_R16 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[16]) 66define FRAME_R17 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[17]) 67define FRAME_R18 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[18]) 68define FRAME_R19 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[19]) 69define FRAME_R20 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[20]) 70define FRAME_R21 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[21]) 71define FRAME_R22 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[22]) 72define FRAME_R23 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[23]) 73define FRAME_R24 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[24]) 74define FRAME_R25 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[25]) 75define FRAME_R26 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[26]) 76define FRAME_R27 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[27]) 77define FRAME_R28 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[28]) 78define FRAME_R29 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[29]) 79define FRAME_R30 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[30]) 80define FRAME_R31 offsetof(struct ktrapframe, ktf_tf.tf_fixreg[31]) 81define FRAME_LR offsetof(struct ktrapframe, ktf_tf.tf_lr) 82define FRAME_CR offsetof(struct ktrapframe, ktf_tf.tf_cr) 83define FRAME_CTR offsetof(struct ktrapframe, ktf_tf.tf_ctr) 84define FRAME_XER offsetof(struct ktrapframe, ktf_tf.tf_xer) 85define FRAME_CF offsetof(struct ktrapframe, ktf_tf.tf_cf) 86define FRAME_IDEPTH offsetof(struct ktrapframe, ktf_tf.tf_idepth) 87define FRAME_SRR0 offsetof(struct ktrapframe, ktf_tf.tf_srr0) 88define FRAME_SRR1 offsetof(struct ktrapframe, ktf_tf.tf_srr1) 89define FRAME_DEAR offsetof(struct ktrapframe, ktf_tf.tf_dear) 90define FRAME_EXC offsetof(struct ktrapframe, ktf_tf.tf_exc) 91define FRAME_ESR offsetof(struct ktrapframe, ktf_tf.tf_esr) 92define FRAME_PID offsetof(struct ktrapframe, ktf_tf.tf_pid) 93 94define CALLFRAMELEN CALLFRAMELEN 95define CFRAME_SP offsetof(struct callframe, cf_sp) 96define CFRAME_LR offsetof(struct callframe, cf_lr) 97define CFRAME_R30 offsetof(struct callframe, cf_r30) 98define CFRAME_R31 offsetof(struct callframe, cf_r31) 99 100define SFRAMELEN SFRAMELEN 101define SFRAME_SP offsetof(struct switchframe, sf_sp) 102define SFRAME_LR offsetof(struct switchframe, sf_lr) 103define SFRAME_USER_SR offsetof(struct switchframe, sf_user_sr) 104define SFRAME_CR offsetof(struct switchframe, sf_cr) 105define SFRAME_R2 offsetof(struct switchframe, sf_fixreg2) 106define SFRAME_R13 offsetof(struct switchframe, sf_fixreg[0]) 107define SFRAME_R14 offsetof(struct switchframe, sf_fixreg[1]) 108define SFRAME_R15 offsetof(struct switchframe, sf_fixreg[2]) 109define SFRAME_R16 offsetof(struct switchframe, sf_fixreg[3]) 110define SFRAME_R17 offsetof(struct switchframe, sf_fixreg[4]) 111define SFRAME_R18 offsetof(struct switchframe, sf_fixreg[5]) 112define SFRAME_R19 offsetof(struct switchframe, sf_fixreg[6]) 113define SFRAME_R20 offsetof(struct switchframe, sf_fixreg[7]) 114define SFRAME_R21 offsetof(struct switchframe, sf_fixreg[8]) 115define SFRAME_R22 offsetof(struct switchframe, sf_fixreg[9]) 116define SFRAME_R23 offsetof(struct switchframe, sf_fixreg[10]) 117define SFRAME_R24 offsetof(struct switchframe, sf_fixreg[11]) 118define SFRAME_R25 offsetof(struct switchframe, sf_fixreg[12]) 119define SFRAME_R26 offsetof(struct switchframe, sf_fixreg[13]) 120define SFRAME_R27 offsetof(struct switchframe, sf_fixreg[14]) 121define SFRAME_R28 offsetof(struct switchframe, sf_fixreg[15]) 122define SFRAME_R29 offsetof(struct switchframe, sf_fixreg[16]) 123define SFRAME_R30 offsetof(struct switchframe, sf_fixreg[17]) 124define SFRAME_R31 offsetof(struct switchframe, sf_fixreg[18]) 125 126define PCB_PM offsetof(struct pcb, pcb_pm) 127define PCB_SP offsetof(struct pcb, pcb_sp) 128define PCB_ONFAULT offsetof(struct pcb, pcb_onfault) 129 130define PM_CTX offsetof(struct pmap, pm_ctx) 131 132define MSR_PR 31-ilog2(PSL_PR) 133 134define L_CPU offsetof(struct lwp, l_cpu) 135define L_MD_UTF offsetof(struct lwp, l_md.md_utf) 136define L_PCB offsetof(struct lwp, l_addr) 137define L_PROC offsetof(struct lwp, l_proc) 138 139define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall) 140 141define CI_SIZE sizeof(struct cpu_info) 142define CI_CURLWP offsetof(struct cpu_info, ci_curlwp) 143define CI_CURPCB offsetof(struct cpu_info, ci_curpcb) 144define CI_CURPM offsetof(struct cpu_info, ci_curpm) 145define CI_ASTPENDING offsetof(struct cpu_info, ci_astpending) 146define CI_WANT_RESCHED offsetof(struct cpu_info, ci_want_resched) 147define CI_CPL offsetof(struct cpu_info, ci_cpl) 148define CI_IDEPTH offsetof(struct cpu_info, ci_idepth) 149define CI_INTSTK offsetof(struct cpu_info, ci_intstk) 150define CI_TEMPSAVE offsetof(struct cpu_info, ci_tempsave) 151define CI_DDBSAVE offsetof(struct cpu_info, ci_ddbsave) 152define CI_IPKDBSAVE offsetof(struct cpu_info, ci_ipkdbsave) 153define CI_TLBMISSSAVE offsetof(struct cpu_info, ci_tlbmisssave) 154define CI_IDLESPIN offsetof(struct cpu_info, ci_idlespin) 155define CI_NINTR offsetof(struct cpu_info, ci_data.cpu_nintr) 156 157define CPUSAVE_R28 CPUSAVE_R28*sizeof(register_t) 158define CPUSAVE_R29 CPUSAVE_R29*sizeof(register_t) 159define CPUSAVE_R30 CPUSAVE_R30*sizeof(register_t) 160define CPUSAVE_R31 CPUSAVE_R31*sizeof(register_t) 161define CPUSAVE_DEAR CPUSAVE_DEAR*sizeof(register_t) 162define CPUSAVE_ESR CPUSAVE_ESR*sizeof(register_t) 163define CPUSAVE_SRR0 CPUSAVE_SRR0*sizeof(register_t) 164define CPUSAVE_SRR1 CPUSAVE_SRR1*sizeof(register_t) 165 166define FB_PC offsetof(struct faultbuf, fb_pc) 167define FB_SP offsetof(struct faultbuf, fb_sp) 168define FB_R2 offsetof(struct faultbuf, fb_r2) 169define FB_CR offsetof(struct faultbuf, fb_cr) 170define FB_R13 offsetof(struct faultbuf, fb_fixreg[0]) 171define FB_R14 offsetof(struct faultbuf, fb_fixreg[1]) 172define FB_R15 offsetof(struct faultbuf, fb_fixreg[2]) 173define FB_R16 offsetof(struct faultbuf, fb_fixreg[3]) 174define FB_R17 offsetof(struct faultbuf, fb_fixreg[4]) 175define FB_R18 offsetof(struct faultbuf, fb_fixreg[5]) 176define FB_R19 offsetof(struct faultbuf, fb_fixreg[6]) 177define FB_R20 offsetof(struct faultbuf, fb_fixreg[7]) 178define FB_R21 offsetof(struct faultbuf, fb_fixreg[8]) 179define FB_R22 offsetof(struct faultbuf, fb_fixreg[9]) 180define FB_R23 offsetof(struct faultbuf, fb_fixreg[10]) 181define FB_R24 offsetof(struct faultbuf, fb_fixreg[11]) 182define FB_R25 offsetof(struct faultbuf, fb_fixreg[12]) 183define FB_R26 offsetof(struct faultbuf, fb_fixreg[13]) 184define FB_R27 offsetof(struct faultbuf, fb_fixreg[14]) 185define FB_R28 offsetof(struct faultbuf, fb_fixreg[15]) 186define FB_R29 offsetof(struct faultbuf, fb_fixreg[16]) 187define FB_R30 offsetof(struct faultbuf, fb_fixreg[17]) 188define FB_R31 offsetof(struct faultbuf, fb_fixreg[18]) 189 190define PAGE_SIZE PAGE_SIZE 191define PAGE_MASK PAGE_MASK 192define CACHELINESIZE CACHELINESIZE 193 194define CPU_CI offsetof(struct cpu_info, ci_ci) 195 196ifdef __HAVE_MUTEX_STUBS 197define __HAVE_MUTEX_STUBS __HAVE_MUTEX_STUBS 198endif 199ifdef __HAVE_MUTEX_SPIN_STUBS 200define __HAVE_MUTEX_SPIN_STUBS __HAVE_MUTEX_SPIN_STUBS 201endif 202define MTX_OWNER offsetof(struct kmutex, mtx_owner) 203define MTX_LOCK offsetof(struct kmutex, mtx_lock) 204define MTX_IPL offsetof(struct kmutex, mtx_ipl) 205 206ifdef __HAVE_RW_STUBS 207define __HAVE_RW_STUBS __HAVE_RW_STUBS 208endif 209define RW_OWNER offsetof(struct krwlock, rw_owner) 210define RW_WRITE_LOCKED RW_WRITE_LOCKED 211define RW_READ_INCR RW_READ_INCR 212define RW_READER RW_READER 213