NetBSD-5.0.2/sys/arch/alpha/alpha/genassym.cf
# $NetBSD: genassym.cf,v 1.16 2008/09/20 18:29:04 tsutsui 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
#
include <sys/param.h>
include <sys/buf.h>
include <sys/proc.h>
include <sys/sched.h>
include <sys/mbuf.h>
include <sys/msgbuf.h>
include <sys/user.h>
include <sys/syscall.h>
include <machine/cpu.h>
include <machine/reg.h>
include <machine/frame.h>
include <machine/rpb.h>
include <machine/vmparam.h>
include <uvm/uvm.h>
include <uvm/uvm_extern.h>
# general constants
define VM_MAX_ADDRESS VM_MAX_ADDRESS
# 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 ALPHA_PSL_IPL_SOFT
define ALPHA_PSL_IPL_HIGH ALPHA_PSL_IPL_HIGH
# 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_ADDR offsetof(struct lwp, l_addr)
define L_STAT offsetof(struct lwp, l_stat)
define L_CPU offsetof(struct lwp, l_cpu)
define L_PROC offsetof(struct lwp, l_proc)
define L_PRIORITY offsetof(struct lwp, l_priority)
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 U_PCB offsetof(struct user, u_pcb)
define U_PCB_HWPCB offsetof(struct user, u_pcb.pcb_hw)
define U_PCB_HWPCB_KSP offsetof(struct user, u_pcb.pcb_hw.apcb_ksp)
define U_PCB_CONTEXT offsetof(struct user, u_pcb.pcb_context[0])
define U_PCB_ONFAULT offsetof(struct user, u_pcb.pcb_onfault)
define U_PCB_ACCESSADDR offsetof(struct user, u_pcb.pcb_accessaddr)
# 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_FPCURLWP offsetof(struct cpu_info, ci_fpcurlwp)
define CPU_INFO_CURPCB offsetof(struct cpu_info, ci_curpcb)
define CPU_INFO_IDLE_LWP offsetof(struct cpu_info, ci_data.cpu_idlelwp)
define CPU_INFO_SIZEOF sizeof(struct cpu_info)