genassym.cf revision 1.42
1#	$NetBSD: genassym.cf,v 1.42 2005/11/07 11:42:34 yamt Exp $
2
3#
4# Copyright (c) 1998 The NetBSD Foundation, Inc.
5# All rights reserved.
6#
7# This code is derived from software contributed to The NetBSD Foundation
8# by Charles M. Hannum.
9#
10# Redistribution and use in source and binary forms, with or without
11# modification, are permitted provided that the following conditions
12# are met:
13# 1. Redistributions of source code must retain the above copyright
14#    notice, this list of conditions and the following disclaimer.
15# 2. Redistributions in binary form must reproduce the above copyright
16#    notice, this list of conditions and the following disclaimer in the
17#    documentation and/or other materials provided with the distribution.
18# 3. All advertising materials mentioning features or use of this software
19#    must display the following acknowledgement:
20#        This product includes software developed by the NetBSD
21#        Foundation, Inc. and its contributors.
22# 4. Neither the name of The NetBSD Foundation nor the names of its
23#    contributors may be used to endorse or promote products derived
24#    from this software without specific prior written permission.
25#
26# THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36# POSSIBILITY OF SUCH DAMAGE.
37#
38
39#
40# Copyright (c) 1982, 1990 The Regents of the University of California.
41# All rights reserved.
42#
43# This code is derived from software contributed to Berkeley by
44# William Jolitz.
45#
46# Redistribution and use in source and binary forms, with or without
47# modification, are permitted provided that the following conditions
48# are met:
49# 1. Redistributions of source code must retain the above copyright
50#    notice, this list of conditions and the following disclaimer.
51# 2. Redistributions in binary form must reproduce the above copyright
52#    notice, this list of conditions and the following disclaimer in the
53#    documentation and/or other materials provided with the distribution.
54# 3. All advertising materials mentioning features or use of this software
55#    must display the following acknowledgement:
56#	This product includes software developed by the University of
57#	California, Berkeley and its contributors.
58# 4. Neither the name of the University nor the names of its contributors
59#    may be used to endorse or promote products derived from this software
60#    without specific prior written permission.
61#
62# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
63# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
64# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
65# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
66# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
67# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
68# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
69# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
70# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
71# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
72# SUCH DAMAGE.
73#
74#	@(#)genassym.c	5.11 (Berkeley) 5/10/91
75#
76
77if defined(_KERNEL_OPT)
78include "opt_compat_svr4.h"
79include "opt_compat_freebsd.h"
80include "opt_compat_linux.h"
81include "opt_compat_netbsd.h"
82include "opt_multiprocessor.h"
83endif
84
85include <sys/param.h>
86include <sys/proc.h>
87include <sys/resourcevar.h>
88include <sys/device.h>
89include <sys/user.h>
90include <sys/mbuf.h>
91include <netinet/in.h>
92include <netinet/in_systm.h>
93include <netinet/ip.h>
94include <netinet/ip6.h>
95include <netinet/ip_var.h>
96
97include <uvm/uvm.h>
98
99include <machine/trap.h>
100include <machine/pmap.h>
101include <machine/vmparam.h>
102include <machine/intr.h>
103include <machine/types.h>
104
105if defined(_KERNEL) && !defined(_LKM)
106include "ioapic.h"
107include "apm.h"
108endif
109if NAPM > 0
110include <machine/bioscall.h>
111include <machine/apmvar.h>
112endif
113
114include <compat/sys/signal.h>
115
116ifdef COMPAT_SVR4
117include <compat/svr4/svr4_ucontext.h>
118endif
119
120ifdef COMPAT_LINUX
121include <compat/linux/common/linux_signal.h>
122include <compat/linux/common/linux_machdep.h>
123endif
124
125ifdef COMPAT_FREEBSD
126include <machine/freebsd_machdep.h>
127endif
128
129ifdef MULTIPROCESSOR
130include <machine/cpu.h>
131endif
132
133if NIOAPIC > 0
134include <machine/i82093reg.h>
135include <machine/i82093var.h>
136endif
137
138if defined(_KERNEL) && !defined(_LKM)
139include "isa.h"
140endif
141if NISA > 0
142include <machine/isa_machdep.h>
143endif
144
145include <machine/tlog.h>
146
147define	PAGE_SIZE		PAGE_SIZE
148
149define	LSRUN			LSRUN
150define	LSONPROC		LSONPROC
151
152define	PTE_BASE		PTE_BASE
153define	UPAGES			UPAGES
154define	USPACE			USPACE
155define	KERNBASE		KERNBASE
156define	KERNTEXTOFF		KERNTEXTOFF
157
158define	PGSHIFT			PGSHIFT
159define	PGOFSET			PGOFSET
160define	PDSHIFT			PDSHIFT
161define	PDOFSET			PDOFSET
162define	NBPD			NBPD
163
164define	PG_RW			PG_RW
165define	PG_V			PG_V
166define	PG_KW			PG_KW
167define	PG_KR			PG_KR
168
169define	PDSLOT_PTE		PDSLOT_PTE
170define	PDSLOT_APTE		PDSLOT_APTE
171define	PDSLOT_KERN		PDSLOT_KERN
172define	NKPTP_MIN		NKPTP_MIN
173define	NKPTP_MAX		NKPTP_MAX
174
175define	VM_MAXUSER_ADDRESS	(int)VM_MAXUSER_ADDRESS
176
177define	UVM_PAGE_IDLE_ZERO	offsetof(struct uvm, page_idle_zero)
178
179define	L_ADDR			offsetof(struct lwp, l_addr)
180define	L_BACK			offsetof(struct lwp, l_back)
181define	L_FORW			offsetof(struct lwp, l_forw)
182define	L_PRIORITY		offsetof(struct lwp, l_priority)
183define	L_STAT			offsetof(struct lwp, l_stat)
184define	L_WCHAN			offsetof(struct lwp, l_wchan)
185define	L_PROC			offsetof(struct lwp, l_proc)
186define	L_MD_TSS_SEL		offsetof(struct lwp, l_md.md_tss_sel)
187define	L_MD_REGS		offsetof(struct lwp, l_md.md_regs)
188define	L_CPU			offsetof(struct lwp, l_cpu)
189define	P_FLAG			offsetof(struct proc, p_flag)
190define	P_RASLIST		offsetof(struct proc, p_raslist)
191define	P_MD_SYSCALL		offsetof(struct proc, p_md.md_syscall)
192define	P_MD_ASTPENDING		offsetof(struct proc, p_md.md_astpending)
193
194define	P_SYSTEM		P_SYSTEM
195
196define	M_DATA			offsetof(struct mbuf, m_data)
197define	M_LEN			offsetof(struct mbuf, m_len)
198define	M_NEXT			offsetof(struct mbuf, m_next)
199
200define	IP_SRC			offsetof(struct ip, ip_src)
201define	IP_DST			offsetof(struct ip, ip_dst)
202
203define	IP6_SRC			offsetof(struct ip6_hdr, ip6_src)
204define	IP6_DST			offsetof(struct ip6_hdr, ip6_dst)
205
206define	V_TRAP			offsetof(struct uvmexp, traps)
207define	V_INTR			offsetof(struct uvmexp, intrs)
208
209define	PCB_CR3			offsetof(struct pcb, pcb_cr3)
210define	PCB_EBP			offsetof(struct pcb, pcb_ebp)
211define	PCB_ESP			offsetof(struct pcb, pcb_esp)
212define	PCB_CR0			offsetof(struct pcb, pcb_cr0)
213define	PCB_LDT_SEL		offsetof(struct pcb, pcb_ldt_sel)
214define	PCB_ONFAULT		offsetof(struct pcb, pcb_onfault)
215define	PCB_FPCPU		offsetof(struct pcb, pcb_fpcpu)
216
217define	TF_CS			offsetof(struct trapframe, tf_cs)
218define	TF_EIP			offsetof(struct trapframe, tf_eip)
219define	TF_ERR			offsetof(struct trapframe, tf_err)
220define	TF_TRAPNO		offsetof(struct trapframe, tf_trapno)
221define	TF_EFLAGS		offsetof(struct trapframe, tf_eflags)
222
223define	TF_GS			offsetof(struct trapframe, tf_gs)
224define	TF_FS			offsetof(struct trapframe, tf_fs)
225define	TF_ES			offsetof(struct trapframe, tf_es)
226define	TF_DS			offsetof(struct trapframe, tf_ds)
227define	TF_EDI			offsetof(struct trapframe, tf_edi)
228define	TF_ESI			offsetof(struct trapframe, tf_esi)
229define	TF_EBP			offsetof(struct trapframe, tf_ebp)
230define	TF_EBX			offsetof(struct trapframe, tf_ebx)
231define	TF_EDX			offsetof(struct trapframe, tf_edx)
232define	TF_ECX			offsetof(struct trapframe, tf_ecx)
233define	TF_EAX			offsetof(struct trapframe, tf_eax)
234
235define	TF_PUSHSIZE		offsetof(struct trapframe, tf_trapno)
236
237define	FRAMESIZE		sizeof(struct trapframe)
238
239ifdef COMPAT_SVR4
240define	SVR4_SIGF_HANDLER	offsetof(struct svr4_sigframe, sf_handler)
241define	SVR4_SIGF_UC		offsetof(struct svr4_sigframe, sf_uc)
242endif
243
244ifdef COMPAT_LINUX
245define	LINUX_SIGF_HANDLER	offsetof(struct linux_sigframe, sf_handler)
246define	LINUX_SIGF_SC		offsetof(struct linux_sigframe, sf_sc)
247define	LINUX_RT_SIGF_HANDLER	offsetof(struct linux_rt_sigframe, sf_handler)
248define	LINUX_RT_SIGF_UC	offsetof(struct linux_rt_sigframe, sf_uc)
249endif
250
251ifdef COMPAT_FREEBSD
252define	FREEBSD_SIGF_HANDLER	offsetof(struct freebsd_sigframe, sf_handler)
253define	FREEBSD_SIGF_SC		offsetof(struct freebsd_sigframe, sf_sc)
254endif
255
256define	IH_FUN			offsetof(struct intrhand, ih_fun)
257define	IH_ARG			offsetof(struct intrhand, ih_arg)
258define	IH_LEVEL		offsetof(struct intrhand, ih_level)
259define	IH_NEXT			offsetof(struct intrhand, ih_next)
260
261if NAPM > 0
262define	APM_CODE32		offsetof(struct apm_connect_info, apm_code32_seg_base)
263define	APM_CODE16		offsetof(struct apm_connect_info, apm_code16_seg_base)
264define	APM_DATA		offsetof(struct apm_connect_info, apm_data_seg_base)
265define	APM_CODE32_LEN		offsetof(struct apm_connect_info, apm_code32_seg_len)
266define	APM_DATA_LEN		offsetof(struct apm_connect_info, apm_data_seg_len)
267define	APM_ENTRY		offsetof(struct apm_connect_info, apm_entrypt)
268define	APM_DETAIL		offsetof(struct apm_connect_info, apm_detail)
269define	APM_SIZE		sizeof(struct apm_connect_info)
270define	BIOSCALLREG_EAX		offsetof(struct bioscallregs, EAX)
271define	BIOSCALLREG_EBX		offsetof(struct bioscallregs, EBX)
272define	BIOSCALLREG_ECX		offsetof(struct bioscallregs, ECX)
273define	BIOSCALLREG_EDX		offsetof(struct bioscallregs, EDX)
274define	BIOSCALLREG_ESI		offsetof(struct bioscallregs, ESI)
275define	BIOSCALLREG_EDI		offsetof(struct bioscallregs, EDI)
276define	BIOSCALLREG_EFLAGS	offsetof(struct bioscallregs, EFLAGS)
277endif
278
279define	CPU_INFO_SELF		offsetof(struct cpu_info, ci_self)
280define	CPU_INFO_RESCHED	offsetof(struct cpu_info, ci_want_resched)
281define	CPU_INFO_WANT_PMAPLOAD	offsetof(struct cpu_info, ci_want_pmapload)
282define	CPU_INFO_TLBSTATE	offsetof(struct cpu_info, ci_tlbstate)
283define	TLBSTATE_VALID		TLBSTATE_VALID
284define	CPU_INFO_CURLWP		offsetof(struct cpu_info, ci_curlwp)
285define	CPU_INFO_CURPCB		offsetof(struct cpu_info, ci_curpcb)
286define	CPU_INFO_IDLE_PCB	offsetof(struct cpu_info, ci_idle_pcb)
287define  CPU_INFO_IDLE_TSS_SEL	offsetof(struct cpu_info, ci_idle_tss_sel)
288define	CPU_INFO_ASTPENDING	offsetof(struct cpu_info, ci_astpending)
289
290define	CPU_INFO_LEVEL		offsetof(struct cpu_info, ci_cpuid_level)
291define	CPU_INFO_VENDOR		offsetof(struct cpu_info, ci_vendor[0])
292define	CPU_INFO_SIGNATURE	offsetof(struct cpu_info, ci_signature)
293define	CPU_INFO_FEATURES	offsetof(struct cpu_info, ci_feature_flags)
294define	CPU_INFO_BRAND		offsetof(struct cpu_info, ci_brand_id)
295
296define	CPU_TLOG_OFFSET		offsetof(struct cpu_info, ci_tlog_offset)
297define	CPU_TLOG_BASE		offsetof(struct cpu_info, ci_tlog_base)
298
299define	CPU_INFO_GDT		offsetof(struct cpu_info, ci_gdt)
300define	CPU_INFO_IPENDING	offsetof(struct cpu_info, ci_ipending)
301define	CPU_INFO_IMASK		offsetof(struct cpu_info, ci_imask)
302define	CPU_INFO_IUNMASK	offsetof(struct cpu_info, ci_iunmask)
303define	CPU_INFO_ILEVEL		offsetof(struct cpu_info, ci_ilevel)
304define	CPU_INFO_IDEPTH		offsetof(struct cpu_info, ci_idepth)
305define	CPU_INFO_ISOURCES	offsetof(struct cpu_info, ci_isources)
306
307if NIOAPIC > 0
308define		IOAPIC_SC_REG		offsetof(struct ioapic_softc, sc_reg)
309define		IOAPIC_SC_DATA		offsetof(struct ioapic_softc, sc_data)
310define		PIC_LOCK		offsetof(struct pic, pic_lock)
311endif
312
313define	SIZEOF_CPU_INFO		sizeof(struct cpu_info)
314
315define        SIZEOF_ISOURCE          sizeof(struct intrsource)
316define        SIZEOF_ISTUB            sizeof(struct intrstub)
317
318define		IS_RECURSE	offsetof(struct intrsource, is_recurse)
319define		IS_RESUME	offsetof(struct intrsource, is_resume)
320define		IS_EVCNTLO	offsetof(struct intrsource, is_evcnt.ev_count)
321define		IS_EVCNTHI	offsetof(struct intrsource, is_evcnt.ev_count)+4
322define		IS_HANDLERS	offsetof(struct intrsource, is_handlers)
323define		IS_PIC		offsetof(struct intrsource, is_pic)
324define		IS_FLAGS	offsetof(struct intrsource, is_flags)
325define		IS_PIN		offsetof(struct intrsource, is_pin)
326define		IS_TYPE		offsetof(struct intrsource, is_type)
327define		IS_MAXLEVEL	offsetof(struct intrsource, is_maxlevel)
328
329define	TREC_SP			offsetof(struct trec, tr_sp)
330define	TREC_HPC		offsetof(struct trec, tr_hpc)
331define	TREC_IPC		offsetof(struct trec, tr_ipc)
332define	TREC_TSC		offsetof(struct trec, tr_tsc)
333define	TREC_LBF		offsetof(struct trec, tr_lbf)
334define	TREC_LBT		offsetof(struct trec, tr_lbt)
335define	TREC_IBF		offsetof(struct trec, tr_ibf)
336define	TREC_IBT		offsetof(struct trec, tr_ibt)
337
338define	SIZEOF_TREC		sizeof(struct trec)
339define	SIZEOF_TLOG		sizeof(struct tlog)
340
341define	IPL_NONE		IPL_NONE
342define	IPL_SCHED		IPL_SCHED
343define	IPL_CLOCK		IPL_CLOCK
344define	IPL_HIGH		IPL_HIGH
345define	IPL_IPI			IPL_IPI
346
347define	IPL_SOFTNET		IPL_SOFTNET
348define	IPL_SOFTCLOCK		IPL_SOFTCLOCK
349define	IPL_SOFTSERIAL		IPL_SOFTSERIAL
350
351define	LIR_IPI			LIR_IPI
352define	LIR_TIMER		LIR_TIMER
353
354define	SIR_NET			SIR_NET
355define	SIR_CLOCK		SIR_CLOCK
356define	SIR_SERIAL		SIR_SERIAL
357
358define	IREENT_MAGIC		IREENT_MAGIC
359
360define	X86_SOFTINTR_SOFTSERIAL	X86_SOFTINTR_SOFTSERIAL
361define	X86_SOFTINTR_SOFTNET	X86_SOFTINTR_SOFTNET
362define	X86_SOFTINTR_SOFTCLOCK	X86_SOFTINTR_SOFTCLOCK
363
364define	PSL_AC			PSL_AC
365define	PSL_MBO			PSL_MBO
366define	PSL_ID			PSL_ID
367define	PSL_VM			PSL_VM
368