# $NetBSD: genassym.cf,v 1.71 2020/08/12 08:57:03 skrll Exp $ # # Copyright (c) 1992, 1993 # The Regents of the University of California. All rights reserved. # # This code is derived from software contributed to Berkeley by # Ralph Campbell. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # from @(#)genassym.c 8.2 (Berkeley) 9/23/93 # # # Copyright (c) 1997 # Jonathan Stone. All rights reserved. # # This code is derived from software contributed to Berkeley by # Ralph Campbell. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. All advertising materials mentioning features or use of this software # must display the following acknowledgement: # This product includes software developed by the University of # California, Berkeley and its contributors. # 4. Neither the name of the University nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # # from @(#)genassym.c 8.2 (Berkeley) 9/23/93 # quote #define __INTR_PRIVATE quote #define __MUTEX_PRIVATE 1 include include include include include include include include include include include include include include define SIGFPE SIGFPE define SIGILL SIGILL define SIGSEGV SIGSEGV ifndef _MODULE define PAGE_SIZE PAGE_SIZE define PGSHIFT PGSHIFT define PGOFSET PGOFSET define NBPG NBPG define SEGSHIFT SEGSHIFT define SEGOFSET SEGOFSET define SEGLENGTH SEGLENGTH define NBSEG NBSEG define NSEGPG NSEGPG define PTPSHIFT PTPSHIFT define PTPLENGTH PTPLENGTH define NPTEPG NPTEPG ifdef _LP64 define XSEGSHIFT XSEGSHIFT define XSEGOFSET XSEGOFSET define XSEGLENGTH XSEGLENGTH define NBXSEG NBXSEG define NXSEGPG NXSEGPG else define XSEGSHIFT SEGSHIFT define XSEGLENGTH SEGLENGTH endif define USPACE USPACE define UPAGES UPAGES endif ifdef __HAVE_FAST_SOFTINTS define __HAVE_FAST_SOFTINTS 1 endif define MIPS_KSEG0_START MIPS_KSEG0_START define MIPS_KSEG1_START MIPS_KSEG1_START define MIPS_KSEG2_START MIPS_KSEG2_START define MIPS_XKPHYS_START MIPS_XKPHYS_START define MIPS_XKPHYS_UNCACHED MIPS_PHYS_TO_XKPHYS_UNCACHED(0) define MIPS_XKPHYS_CCA3 MIPS_PHYS_TO_XKPHYS(3, 0) define MIPS_XKPHYS_CCA4 MIPS_PHYS_TO_XKPHYS(4, 0) define MIPS_XKSEG_START MIPS_XKSEG_START # Important offsets into the lwp and proc structs & associated constants define L_CPU offsetof(struct lwp, l_cpu) define L_PCB offsetof(struct lwp, l_addr) define L_PRIVATE offsetof(struct lwp, l_private) define L_PROC offsetof(struct lwp, l_proc) ifndef _MODULE define L_MD_UTF offsetof(struct lwp, l_md.md_utf) define L_MD_UPTE_0 offsetof(struct lwp, l_md.md_upte[0]) define L_MD_UPTE_1 offsetof(struct lwp, l_md.md_upte[1]) define L_MD_ASTPENDING offsetof(struct lwp, l_md.md_astpending) endif define P_RASLIST offsetof(struct proc, p_raslist) define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall) define PCB_FPREGS offsetof(struct pcb, pcb_fpregs) define PCB_CONTEXT offsetof(struct pcb, pcb_context) define PCB_ONFAULT offsetof(struct pcb, pcb_onfault) define PCB_PPL offsetof(struct pcb, pcb_ppl) define VM_MIN_ADDRESS VM_MIN_ADDRESS define VM_MIN_KERNEL_ADDRESS VM_MIN_KERNEL_ADDRESS define VM_MAX_KERNEL_ADDRESS VM_MAX_KERNEL_ADDRESS define CI_NINTR offsetof(struct cpu_info, ci_data.cpu_nintr) # /* XXX */ define MIPSX_FLUSHICACHE 0 ifndef _MODULE define PG_ASID PG_ASID define MIPS1_PG_G MIPS1_PG_G define MIPS1_PG_V MIPS1_PG_V define MIPS3_PG_G MIPS3_PG_G define MIPS3_PG_V MIPS3_PG_V define MIPS3_PG_HVPN MIPS3_PG_HVPN define MIPS3_PG_ASID MIPS3_PG_ASID ifdef MIPS3_PG_ODDPG define MIPS3_PG_ODDPG MIPS3_PG_ODDPG define V_MIPS3_PG_ODDPG ilog2(MIPS3_PG_ODDPG) endif ifdef MIPS3_PG_NEXT define MIPS3_PG_NEXT MIPS3_PG_NEXT endif define V_MIPS3_PG_V ilog2(MIPS3_PG_V) define V_MIPS3_PG_HVPN ilog2(__LOWEST_SET_BIT(MIPS3_PG_HVPN)) define V_MIPS3_PG_ASID ilog2(__LOWEST_SET_BIT(MIPS3_PG_ASID)) define S_MIPS3_PG_ASID ilog2(MIPS3_PG_ASID+1) endif define TF_SIZ sizeof(struct trapframe) define TF_REG_ZERO offsetof(struct trapframe, tf_regs[_R_ZERO]) define TF_REG_AST offsetof(struct trapframe, tf_regs[_R_AST]) define TF_REG_V0 offsetof(struct trapframe, tf_regs[_R_V0]) define TF_REG_V1 offsetof(struct trapframe, tf_regs[_R_V1]) define TF_REG_A0 offsetof(struct trapframe, tf_regs[_R_A0]) define TF_REG_A1 offsetof(struct trapframe, tf_regs[_R_A1]) define TF_REG_A2 offsetof(struct trapframe, tf_regs[_R_A2]) define TF_REG_A3 offsetof(struct trapframe, tf_regs[_R_A3]) define TF_REG_T0 offsetof(struct trapframe, tf_regs[_R_T0]) define TF_REG_T1 offsetof(struct trapframe, tf_regs[_R_T1]) define TF_REG_T2 offsetof(struct trapframe, tf_regs[_R_T2]) define TF_REG_T3 offsetof(struct trapframe, tf_regs[_R_T3]) # For old-ABI, these are T4-T7. For new-ABI, these are A4-A7. # Use these in code shared by 32-bit and 64-bit processors. define TF_REG_TA0 offsetof(struct trapframe, tf_regs[_R_TA0]) define TF_REG_TA1 offsetof(struct trapframe, tf_regs[_R_TA1]) define TF_REG_TA2 offsetof(struct trapframe, tf_regs[_R_TA2]) define TF_REG_TA3 offsetof(struct trapframe, tf_regs[_R_TA3]) if !defined(__mips_n32) && !defined(__mips_n64) # Use these only in code used by 32-bit processors (which cannot # use new-ABI). define TF_REG_T4 offsetof(struct trapframe, tf_regs[_R_T4]) define TF_REG_T5 offsetof(struct trapframe, tf_regs[_R_T5]) define TF_REG_T6 offsetof(struct trapframe, tf_regs[_R_T6]) define TF_REG_T7 offsetof(struct trapframe, tf_regs[_R_T7]) else define TF_REG_A4 offsetof(struct trapframe, tf_regs[_R_A4]) define TF_REG_A5 offsetof(struct trapframe, tf_regs[_R_A5]) define TF_REG_A6 offsetof(struct trapframe, tf_regs[_R_A6]) define TF_REG_A7 offsetof(struct trapframe, tf_regs[_R_A7]) endif define TF_REG_S0 offsetof(struct trapframe, tf_regs[_R_S0]) define TF_REG_S1 offsetof(struct trapframe, tf_regs[_R_S1]) define TF_REG_S2 offsetof(struct trapframe, tf_regs[_R_S2]) define TF_REG_S3 offsetof(struct trapframe, tf_regs[_R_S3]) define TF_REG_S4 offsetof(struct trapframe, tf_regs[_R_S4]) define TF_REG_S5 offsetof(struct trapframe, tf_regs[_R_S5]) define TF_REG_S6 offsetof(struct trapframe, tf_regs[_R_S6]) define TF_REG_S7 offsetof(struct trapframe, tf_regs[_R_S7]) define TF_REG_T8 offsetof(struct trapframe, tf_regs[_R_T8]) define TF_MIPS_CURLWP offsetof(struct trapframe, tf_regs[_R_T8]) define TF_REG_T9 offsetof(struct trapframe, tf_regs[_R_T9]) define TF_REG_K0 offsetof(struct trapframe, tf_regs[_R_K0]) define TF_REG_K1 offsetof(struct trapframe, tf_regs[_R_K1]) define TF_REG_GP offsetof(struct trapframe, tf_regs[_R_GP]) define TF_REG_SP offsetof(struct trapframe, tf_regs[_R_SP]) define TF_REG_S8 offsetof(struct trapframe, tf_regs[_R_S8]) define TF_REG_RA offsetof(struct trapframe, tf_regs[_R_RA]) define TF_REG_SR offsetof(struct trapframe, tf_regs[_R_SR]) define TF_REG_MULLO offsetof(struct trapframe, tf_regs[_R_MULLO]) define TF_REG_MULHI offsetof(struct trapframe, tf_regs[_R_MULHI]) define TF_REG_BADVADDR offsetof(struct trapframe, tf_regs[_R_BADVADDR]) define TF_REG_CAUSE offsetof(struct trapframe, tf_regs[_R_CAUSE]) define TF_REG_EPC offsetof(struct trapframe, tf_regs[_R_PC]) define TF_PPL offsetof(struct trapframe, tf_ppl) # XXX Atheros HAL define TF_PAD offsetof(struct trapframe, tf_pad) define FRAME_FSR sizeof(mips_fpreg_t) * 32 define FRAME_FP0 sizeof(mips_fpreg_t) * 0 define FRAME_FP1 sizeof(mips_fpreg_t) * 1 define FRAME_FP2 sizeof(mips_fpreg_t) * 2 define FRAME_FP3 sizeof(mips_fpreg_t) * 3 define FRAME_FP4 sizeof(mips_fpreg_t) * 4 define FRAME_FP5 sizeof(mips_fpreg_t) * 5 define FRAME_FP6 sizeof(mips_fpreg_t) * 6 define FRAME_FP7 sizeof(mips_fpreg_t) * 7 define FRAME_FP8 sizeof(mips_fpreg_t) * 8 define FRAME_FP9 sizeof(mips_fpreg_t) * 9 define FRAME_FP10 sizeof(mips_fpreg_t) * 10 define FRAME_FP11 sizeof(mips_fpreg_t) * 11 define FRAME_FP12 sizeof(mips_fpreg_t) * 12 define FRAME_FP13 sizeof(mips_fpreg_t) * 13 define FRAME_FP14 sizeof(mips_fpreg_t) * 14 define FRAME_FP15 sizeof(mips_fpreg_t) * 15 define FRAME_FP16 sizeof(mips_fpreg_t) * 16 define FRAME_FP17 sizeof(mips_fpreg_t) * 17 define FRAME_FP18 sizeof(mips_fpreg_t) * 18 define FRAME_FP19 sizeof(mips_fpreg_t) * 19 define FRAME_FP20 sizeof(mips_fpreg_t) * 20 define FRAME_FP21 sizeof(mips_fpreg_t) * 21 define FRAME_FP22 sizeof(mips_fpreg_t) * 22 define FRAME_FP23 sizeof(mips_fpreg_t) * 23 define FRAME_FP24 sizeof(mips_fpreg_t) * 24 define FRAME_FP25 sizeof(mips_fpreg_t) * 25 define FRAME_FP26 sizeof(mips_fpreg_t) * 26 define FRAME_FP27 sizeof(mips_fpreg_t) * 27 define FRAME_FP28 sizeof(mips_fpreg_t) * 28 define FRAME_FP29 sizeof(mips_fpreg_t) * 29 define FRAME_FP30 sizeof(mips_fpreg_t) * 30 define FRAME_FP31 sizeof(mips_fpreg_t) * 31 define KERNFRAME_SIZ sizeof(struct kernframe) if defined(__mips_o32) || defined(__mips_o64) define KERNFRAME_ARG5 offsetof(struct kernframe, cf_args[4]) define KERNFRAME_ARG6 offsetof(struct kernframe, cf_args[5]) endif define KERNFRAME_SP offsetof(struct kernframe, cf_sp) define KERNFRAME_RA offsetof(struct kernframe, cf_ra) # offset of trapframe in struct kernframe define TF_BASE offsetof(struct kernframe, cf_frame) define CTXSWFRAME_SIZ sizeof(label_t) define SF_REG_S0 offsetof(label_t, val[_L_S0]) define SF_REG_S1 offsetof(label_t, val[_L_S1]) define SF_REG_S2 offsetof(label_t, val[_L_S2]) define SF_REG_S3 offsetof(label_t, val[_L_S3]) define SF_REG_S4 offsetof(label_t, val[_L_S4]) define SF_REG_S5 offsetof(label_t, val[_L_S5]) define SF_REG_S6 offsetof(label_t, val[_L_S6]) define SF_REG_S7 offsetof(label_t, val[_L_S7]) define SF_REG_T8 offsetof(label_t, val[_L_T8]) define SF_REG_GP offsetof(label_t, val[_L_GP]) define SF_REG_SP offsetof(label_t, val[_L_SP]) define SF_REG_S8 offsetof(label_t, val[_L_S8]) define SF_REG_RA offsetof(label_t, val[_L_RA]) define SF_REG_SR offsetof(label_t, val[_L_SR]) define MTX_OWNER offsetof(struct kmutex, mtx_owner) define MTX_LOCK offsetof(struct kmutex, mtx_lock) define MTX_IPL offsetof(struct kmutex, mtx_ipl) # CPU info define CPU_INFO_CPL offsetof(struct cpu_info, ci_cpl) define CPU_INFO_IDEPTH offsetof(struct cpu_info, ci_idepth) define CPU_INFO_CURLWP offsetof(struct cpu_info, ci_curlwp) define CPU_INFO_IDLELWP offsetof(struct cpu_info, ci_data.cpu_idlelwp) define CPU_INFO_EV_TLBMISSES offsetof(struct cpu_info, ci_ev_tlbmisses.ev_count) ifdef _LP64 define CPU_INFO_PMAP_SEGTAB offsetof(struct cpu_info, ci_pmap_segtabs[0]) define CPU_INFO_PMAP_SEG0TAB offsetof(struct cpu_info, ci_pmap_seg0tabs[0]) else define CPU_INFO_PMAP_SEG0TAB offsetof(struct cpu_info, ci_pmap_segtabs[0]) endif define CPU_INFO_DIVISOR_DELAY offsetof(struct cpu_info, ci_divisor_delay) define CPU_INFO_MTX_COUNT offsetof(struct cpu_info, ci_mtx_count) define CPU_INFO_MTX_OLDSPL offsetof(struct cpu_info, ci_mtx_oldspl) define CPU_INFO_NMI_STACK offsetof(struct cpu_info, ci_nmi_stack) ifdef MULTIPROCESSOR define CPU_INFO_FLAGS offsetof(struct cpu_info, ci_flags) define CPU_INFO_KSP_TLB_SLOT offsetof(struct cpu_info, ci_ksp_tlb_slot) define CPUF_PRESENT CPUF_PRESENT endif define IPL_NONE IPL_NONE define IPL_SOFTCLOCK IPL_SOFTCLOCK define IPL_SOFTBIO IPL_SOFTBIO define IPL_SOFTNET IPL_SOFTNET define IPL_SOFTSERIAL IPL_SOFTSERIAL define IPL_VM IPL_VM define IPL_SCHED IPL_SCHED define IPL_DDB IPL_DDB define IPL_HIGH IPL_HIGH define V_MIPS3_SR_SR ilog2(MIPS3_SR_SR) define V_MIPS_SR_BEV ilog2(MIPS_SR_BEV) define V_MIPS1_TLB_PID ilog2(__LOWEST_SET_BIT(MIPS1_TLB_PID)) define S_MIPS1_TLB_PID ilog2(MIPS1_TLB_PID+1) ifdef __HAVE_PREEMPTION define __HAVE_PREEMPTION 1 define CPU_INFO_SOFTINTS offsetof(struct cpu_info, ci_softints) define RESCHED_KPREEMPT RESCHED_KPREEMPT define SOFTINT_KPREEMPT SOFTINT_KPREEMPT endif define TLBMASK_HI offsetof(struct tlbmask, tlb_hi) define TLBMASK_LO0 offsetof(struct tlbmask, tlb_lo0) define TLBMASK_LO1 offsetof(struct tlbmask, tlb_lo1) define TLBMASK_MASK offsetof(struct tlbmask, tlb_mask) define PMAP_LIMITS_VIRTUAL_END offsetof(struct pmap_limits, virtual_end) define MO_CPU_ID offsetof(struct mips_options, mips_cpu_id) define MO_FPU_ID offsetof(struct mips_options, mips_fpu_id) define MO_NUM_TLB_ENTRIES offsetof(struct mips_options, mips_num_tlb_entries) define MCI_SDCACHE_SIZE offsetof(struct mips_cache_info, mci_sdcache_size) define MIPS_CURLWP_LABEL MIPS_CURLWP_LABEL define MIPS_CURLWP_REG MIPS_CURLWP_REG define LJV_TLB_UPDATE_ADDR offsetof(mips_locore_jumpvec_t, ljv_tlb_update_addr) ifdef MIPS1 define MIPS_HAS_LLSC 0 else ifdef MIPS3_4100 define MIPS_HAS_LLSC 0 else define MIPS_HAS_LLSC 1 endif endif