1# $NetBSD: genassym.cf,v 1.26 2002/03/06 07:32:15 simonb Exp $ 2# 3# Copyright (c) 1997 4# Jonathan Stone. All rights reserved. 5# Copyright (c) 1992, 1993 6# The Regents of the University of California. All rights reserved. 7# 8# This code is derived from software contributed to Berkeley by 9# Ralph Campbell. 10# 11# Redistribution and use in source and binary forms, with or without 12# modification, are permitted provided that the following conditions 13# are met: 14# 1. Redistributions of source code must retain the above copyright 15# notice, this list of conditions and the following disclaimer. 16# 2. Redistributions in binary form must reproduce the above copyright 17# notice, this list of conditions and the following disclaimer in the 18# documentation and/or other materials provided with the distribution. 19# 3. All advertising materials mentioning features or use of this software 20# must display the following acknowledgement: 21# This product includes software developed by the University of 22# California, Berkeley and its contributors. 23# 4. Neither the name of the University nor the names of its contributors 24# may be used to endorse or promote products derived from this software 25# without specific prior written permission. 26# 27# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 28# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 29# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 30# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 31# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 32# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 33# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 34# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 35# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 36# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 37# SUCH DAMAGE. 38# 39# from @(#)genassym.c 8.2 (Berkeley) 9/23/93 40# 41 42include <sys/param.h> 43include <sys/buf.h> 44include <sys/map.h> 45include <sys/proc.h> 46include <sys/mbuf.h> 47include <sys/user.h> 48 49include <uvm/uvm.h> 50 51include <mips/cpu.h> 52include <mips/cache.h> 53include <mips/regnum.h> 54include <mips/vmparam.h> 55include <mips/pte.h> 56include <mips/locore.h> 57 58define P_FORW offsetof(struct proc, p_forw) 59define P_BACK offsetof(struct proc, p_back) 60define P_PRIORITY offsetof(struct proc, p_priority) 61define P_ADDR offsetof(struct proc, p_addr) 62define P_STAT offsetof(struct proc, p_stat) 63 64define SONPROC SONPROC 65 66define P_MD_REGS offsetof(struct proc, p_md.md_regs) 67define P_MD_UPTE_0 offsetof(struct proc, p_md.md_upte[0]) 68define P_MD_UPTE_1 offsetof(struct proc, p_md.md_upte[1]) 69define P_MD_ASTPENDING offsetof(struct proc, p_md.md_astpending) 70define P_MD_SYSCALL offsetof(struct proc, p_md.md_syscall) 71 72define U_PCB_FPREGS offsetof(struct user, u_pcb.pcb_fpregs) 73define U_PCB_CONTEXT offsetof(struct user, u_pcb.pcb_context) 74define U_PCB_ONFAULT offsetof(struct user, u_pcb.pcb_onfault) 75define U_PCB_PPL offsetof(struct user, u_pcb.pcb_ppl) 76 77define VM_MIN_ADDRESS VM_MIN_ADDRESS 78define VM_MIN_KERNEL_ADDRESS VM_MIN_KERNEL_ADDRESS 79 80define UVM_PAGE_IDLE_ZERO offsetof(struct uvm, page_idle_zero) 81define UVMEXP_SWTCH offsetof(struct uvmexp, swtch) 82 83define SIGFPE SIGFPE 84define SIGILL SIGILL 85define SIGSEGV SIGSEGV 86 87# CPU info 88define CPU_INFO_DIVISOR_DELAY offsetof(struct cpu_info, ci_divisor_delay) 89 90 91# /* XXX */ 92define MIPSX_FLUSHICACHE 0 93define MIPSX_CPU_SWITCH_RESUME sizeof(long *) * 0 94define MIPSX_CPU_IDLE sizeof(long *) * 2 95 96define MIPS1_PG_G MIPS1_PG_G 97define MIPS1_PG_V MIPS1_PG_V 98define MIPS3_PG_G MIPS3_PG_G 99define MIPS3_PG_V MIPS3_PG_V 100define MIPS3_PG_HVPN MIPS3_PG_HVPN 101define MIPS3_PG_ASID MIPS3_PG_ASID 102define MIPS3_PG_ODDPG MIPS3_PG_ODDPG 103 104define FRAME_SIZ sizeof(struct frame) 105define FRAME_ZERO sizeof(mips_reg_t) * ZERO 106define FRAME_AST sizeof(mips_reg_t) * AST 107define FRAME_V0 sizeof(mips_reg_t) * V0 108define FRAME_V1 sizeof(mips_reg_t) * V1 109define FRAME_A0 sizeof(mips_reg_t) * A0 110define FRAME_A1 sizeof(mips_reg_t) * A1 111define FRAME_A2 sizeof(mips_reg_t) * A2 112define FRAME_A3 sizeof(mips_reg_t) * A3 113define FRAME_T0 sizeof(mips_reg_t) * T0 114define FRAME_T1 sizeof(mips_reg_t) * T1 115define FRAME_T2 sizeof(mips_reg_t) * T2 116define FRAME_T3 sizeof(mips_reg_t) * T3 117define FRAME_T4 sizeof(mips_reg_t) * T4 118define FRAME_T5 sizeof(mips_reg_t) * T5 119define FRAME_T6 sizeof(mips_reg_t) * T6 120define FRAME_T7 sizeof(mips_reg_t) * T7 121define FRAME_S0 sizeof(mips_reg_t) * S0 122define FRAME_S1 sizeof(mips_reg_t) * S1 123define FRAME_S2 sizeof(mips_reg_t) * S2 124define FRAME_S3 sizeof(mips_reg_t) * S3 125define FRAME_S4 sizeof(mips_reg_t) * S4 126define FRAME_S5 sizeof(mips_reg_t) * S5 127define FRAME_S6 sizeof(mips_reg_t) * S6 128define FRAME_S7 sizeof(mips_reg_t) * S7 129define FRAME_T8 sizeof(mips_reg_t) * T8 130define FRAME_T9 sizeof(mips_reg_t) * T9 131define FRAME_K0 sizeof(mips_reg_t) * K0 132define FRAME_K1 sizeof(mips_reg_t) * K1 133define FRAME_GP sizeof(mips_reg_t) * GP 134define FRAME_SP sizeof(mips_reg_t) * SP 135define FRAME_S8 sizeof(mips_reg_t) * S8 136define FRAME_RA sizeof(mips_reg_t) * RA 137define FRAME_SR sizeof(mips_reg_t) * SR 138define FRAME_MULLO sizeof(mips_reg_t) * MULLO 139define FRAME_MULHI sizeof(mips_reg_t) * MULHI 140define FRAME_BADVADDR sizeof(mips_reg_t) * BADVADDR 141define FRAME_CAUSE sizeof(mips_reg_t) * CAUSE 142define FRAME_EPC sizeof(mips_reg_t) * PC 143define FRAME_PPL offsetof(struct frame, f_ppl) 144 145define FRAME_FSR sizeof(mips_fpreg_t) * 32 146define FRAME_FP0 sizeof(mips_fpreg_t) * 0 147define FRAME_FP1 sizeof(mips_fpreg_t) * 1 148define FRAME_FP2 sizeof(mips_fpreg_t) * 2 149define FRAME_FP3 sizeof(mips_fpreg_t) * 3 150define FRAME_FP4 sizeof(mips_fpreg_t) * 4 151define FRAME_FP5 sizeof(mips_fpreg_t) * 5 152define FRAME_FP6 sizeof(mips_fpreg_t) * 6 153define FRAME_FP7 sizeof(mips_fpreg_t) * 7 154define FRAME_FP8 sizeof(mips_fpreg_t) * 8 155define FRAME_FP9 sizeof(mips_fpreg_t) * 9 156define FRAME_FP10 sizeof(mips_fpreg_t) * 10 157define FRAME_FP11 sizeof(mips_fpreg_t) * 11 158define FRAME_FP12 sizeof(mips_fpreg_t) * 12 159define FRAME_FP13 sizeof(mips_fpreg_t) * 13 160define FRAME_FP14 sizeof(mips_fpreg_t) * 14 161define FRAME_FP15 sizeof(mips_fpreg_t) * 15 162define FRAME_FP16 sizeof(mips_fpreg_t) * 16 163define FRAME_FP17 sizeof(mips_fpreg_t) * 17 164define FRAME_FP18 sizeof(mips_fpreg_t) * 18 165define FRAME_FP19 sizeof(mips_fpreg_t) * 19 166define FRAME_FP20 sizeof(mips_fpreg_t) * 20 167define FRAME_FP21 sizeof(mips_fpreg_t) * 21 168define FRAME_FP22 sizeof(mips_fpreg_t) * 22 169define FRAME_FP23 sizeof(mips_fpreg_t) * 23 170define FRAME_FP24 sizeof(mips_fpreg_t) * 24 171define FRAME_FP25 sizeof(mips_fpreg_t) * 25 172define FRAME_FP26 sizeof(mips_fpreg_t) * 26 173define FRAME_FP27 sizeof(mips_fpreg_t) * 27 174define FRAME_FP28 sizeof(mips_fpreg_t) * 28 175define FRAME_FP29 sizeof(mips_fpreg_t) * 29 176define FRAME_FP30 sizeof(mips_fpreg_t) * 30 177define FRAME_FP31 sizeof(mips_fpreg_t) * 31 178 179 180#define KERNFRAME_SIZ (sizeof(register_t) * (6 + 2 ) + sizeof(mips_reg_t) * (17 + 5)) 181define KERNFRAME_SIZ sizeof(struct kernframe) 182define KERNFRAME_ARG5 offsetof(struct kernframe, cf_args[4]) 183define KERNFRAME_ARG6 offsetof(struct kernframe, cf_args[5]) 184define KERNFRAME_SP offsetof(struct kernframe, cf_sp) 185define KERNFRAME_RA offsetof(struct kernframe, cf_ra) 186 187# offset of trapframe in struct kernframe 188define TF_BASE offsetof(struct kernframe, cf_frame) 189 190define TF_REG_AST offsetof(struct trapframe, tf_regs[0]) 191define TF_REG_V0 offsetof(struct trapframe, tf_regs[1]) 192define TF_REG_V1 offsetof(struct trapframe, tf_regs[2]) 193define TF_REG_A0 offsetof(struct trapframe, tf_regs[3]) 194define TF_REG_A1 offsetof(struct trapframe, tf_regs[4]) 195define TF_REG_A2 offsetof(struct trapframe, tf_regs[5]) 196define TF_REG_A3 offsetof(struct trapframe, tf_regs[6]) 197define TF_REG_T0 offsetof(struct trapframe, tf_regs[7]) 198define TF_REG_T1 offsetof(struct trapframe, tf_regs[8]) 199define TF_REG_T2 offsetof(struct trapframe, tf_regs[9]) 200define TF_REG_T3 offsetof(struct trapframe, tf_regs[10]) 201define TF_REG_T4 offsetof(struct trapframe, tf_regs[11]) 202define TF_REG_T5 offsetof(struct trapframe, tf_regs[12]) 203define TF_REG_T6 offsetof(struct trapframe, tf_regs[13]) 204define TF_REG_T7 offsetof(struct trapframe, tf_regs[14]) 205define TF_REG_T8 offsetof(struct trapframe, tf_regs[15]) 206define TF_REG_T9 offsetof(struct trapframe, tf_regs[16]) 207define TF_REG_RA offsetof(struct trapframe, tf_ra) 208define TF_REG_SR offsetof(struct trapframe, tf_sr) 209define TF_REG_MULLO offsetof(struct trapframe, tf_mullo) 210define TF_REG_MULHI offsetof(struct trapframe, tf_mulhi) 211define TF_REG_EPC offsetof(struct trapframe, tf_epc) 212define TF_PPL offsetof(struct trapframe, tf_ppl) 213 214define CTXSWFRAME_SIZ sizeof(mips_reg_t) * 12 215define SF_REG_SR sizeof(mips_reg_t) * 11 216define SF_REG_RA sizeof(mips_reg_t) * 10 217define SF_REG_S0 sizeof(mips_reg_t) * 0 218define SF_REG_S1 sizeof(mips_reg_t) * 1 219define SF_REG_S2 sizeof(mips_reg_t) * 2 220define SF_REG_S3 sizeof(mips_reg_t) * 3 221define SF_REG_S4 sizeof(mips_reg_t) * 4 222define SF_REG_S5 sizeof(mips_reg_t) * 5 223define SF_REG_S6 sizeof(mips_reg_t) * 6 224define SF_REG_S7 sizeof(mips_reg_t) * 7 225define SF_REG_SP sizeof(mips_reg_t) * 8 226define SF_REG_S8 sizeof(mips_reg_t) * 9 227