# $NetBSD: genassym.cf,v 1.31 2024/02/05 22:08:04 andvar Exp $ # # Copyright (c) 1982, 1990, 1993 # The Regents of the University of California. All rights reserved. # # 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.3 (Berkeley) 1/4/94 # # # Copyright (c) 1994, 1995 Gordon W. Ross # Copyright (c) 1993 Adam Glass # # 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.3 (Berkeley) 1/4/94 # quote #define __RWLOCK_PRIVATE quote #define __MUTEX_PRIVATE include include include include include include include include include include include include include include include # general constants define VM_MAX_ADDRESS VM_MAX_ADDRESS define ALPHA_PGBYTES ALPHA_PGBYTES # Register offsets, for stack frames. define FRAME_V0 FRAME_V0 define FRAME_T0 FRAME_T0 define FRAME_T1 FRAME_T1 define FRAME_T2 FRAME_T2 define FRAME_T3 FRAME_T3 define FRAME_T4 FRAME_T4 define FRAME_T5 FRAME_T5 define FRAME_T6 FRAME_T6 define FRAME_T7 FRAME_T7 define FRAME_S0 FRAME_S0 define FRAME_S1 FRAME_S1 define FRAME_S2 FRAME_S2 define FRAME_S3 FRAME_S3 define FRAME_S4 FRAME_S4 define FRAME_S5 FRAME_S5 define FRAME_S6 FRAME_S6 define FRAME_A3 FRAME_A3 define FRAME_A4 FRAME_A4 define FRAME_A5 FRAME_A5 define FRAME_T8 FRAME_T8 define FRAME_T9 FRAME_T9 define FRAME_T10 FRAME_T10 define FRAME_T11 FRAME_T11 define FRAME_RA FRAME_RA define FRAME_T12 FRAME_T12 define FRAME_AT FRAME_AT define FRAME_SP FRAME_SP define FRAME_SW_SIZE FRAME_SW_SIZE define FRAME_PS FRAME_PS define FRAME_PC FRAME_PC define FRAME_GP FRAME_GP define FRAME_A0 FRAME_A0 define FRAME_A1 FRAME_A1 define FRAME_A2 FRAME_A2 define FRAME_SIZE FRAME_SIZE # bits of the PS register define ALPHA_PSL_USERMODE ALPHA_PSL_USERMODE define ALPHA_PSL_IPL_MASK ALPHA_PSL_IPL_MASK define ALPHA_PSL_IPL_0 ALPHA_PSL_IPL_0 define ALPHA_PSL_IPL_SOFT_LO ALPHA_PSL_IPL_SOFT_LO define ALPHA_PSL_IPL_SOFT_HI ALPHA_PSL_IPL_SOFT_HI define ALPHA_PSL_IPL_HIGH ALPHA_PSL_IPL_HIGH # soft interrupt definitions define ALPHA_ALL_SOFTINTS ALPHA_ALL_SOFTINTS # pte bits define ALPHA_PTE_VALID ALPHA_PTE_VALID define ALPHA_PTE_ASM ALPHA_PTE_ASM define ALPHA_PTE_KR ALPHA_PTE_KR define ALPHA_PTE_KW ALPHA_PTE_KW # Important offsets into the lwp and proc structs & associated constants define L_PCB offsetof(struct lwp, l_addr) define L_CPU offsetof(struct lwp, l_cpu) define L_PROC offsetof(struct lwp, l_proc) define L_MD_FLAGS offsetof(struct lwp, l_md.md_flags) define L_MD_PCBPADDR offsetof(struct lwp, l_md.md_pcbpaddr) define L_MD_TF offsetof(struct lwp, l_md.md_tf) define L_MD_ASTPENDING offsetof(struct lwp, l_md.md_astpending) define P_VMSPACE offsetof(struct proc, p_vmspace) define P_RASLIST offsetof(struct proc, p_raslist) define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall) # offsets needed by cpu_switch() to switch mappings. define VM_MAP_PMAP offsetof(struct vmspace, vm_map.pmap) # Important offsets into the user struct & associated constants define UPAGES UPAGES define PCB_HWPCB_KSP offsetof(struct pcb, pcb_hw.apcb_ksp) define PCB_CONTEXT offsetof(struct pcb, pcb_context[0]) define PCB_ONFAULT offsetof(struct pcb, pcb_onfault) # Offsets into struct fpstate, for save, restore define FPREG_FPR_REGS offsetof(struct fpreg, fpr_regs[0]) define FPREG_FPR_CR offsetof(struct fpreg, fpr_cr) # Important other addresses define HWRPB_ADDR HWRPB_ADDR /* Restart parameter block */ define VPTBASE VPTBASE /* Virtual Page Table base */ # Offsets into the HWRPB. define RPB_PRIMARY_CPU_ID offsetof(struct rpb, rpb_primary_cpu_id) # Kernel entries define ALPHA_KENTRY_ARITH ALPHA_KENTRY_ARITH define ALPHA_KENTRY_MM ALPHA_KENTRY_MM define ALPHA_KENTRY_IF ALPHA_KENTRY_IF define ALPHA_KENTRY_UNA ALPHA_KENTRY_UNA # errno values define ENAMETOOLONG ENAMETOOLONG define EFAULT EFAULT # Syscalls called from sigreturn. define SYS_compat_16___sigreturn14 SYS_compat_16___sigreturn14 define SYS_exit SYS_exit # CPU info define CPU_INFO_CURLWP offsetof(struct cpu_info, ci_curlwp) define CPU_INFO_IDLE_LWP offsetof(struct cpu_info, ci_data.cpu_idlelwp) define CPU_INFO_SSIR offsetof(struct cpu_info, ci_ssir) 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_SIZEOF sizeof(struct cpu_info) # Bits in lock fields define RW_WRITE_WANTED RW_WRITE_WANTED define RW_WRITE_LOCKED RW_WRITE_LOCKED define RW_READ_INCR RW_READ_INCR define RW_READ_COUNT_SHIFT RW_READ_COUNT_SHIFT define MUTEX_IPL offsetof(struct kmutex, mtx_ipl) define MUTEX_SIMPLELOCK offsetof(struct kmutex, mtx_lock) define __SIMPLELOCK_LOCKED __SIMPLELOCK_LOCKED