xref: /netbsd/sys/arch/mips/mips/genassym.cf (revision bf9ec67e)
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