1#	$OpenBSD: genassym.cf,v 1.49 2024/10/05 09:54:39 jsg Exp $
2#
3# Copyright (c) 1982, 1990 The Regents of the University of California.
4# All rights reserved.
5#
6# Redistribution and use in source and binary forms, with or without
7# modification, are permitted provided that the following conditions
8# are met:
9# 1. Redistributions of source code must retain the above copyright
10#    notice, this list of conditions and the following disclaimer.
11# 2. Redistributions in binary form must reproduce the above copyright
12#    notice, this list of conditions and the following disclaimer in the
13#    documentation and/or other materials provided with the distribution.
14# 3. Neither the name of the University nor the names of its contributors
15#    may be used to endorse or promote products derived from this software
16#    without specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
19# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21# ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
22# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28# SUCH DAMAGE.
29#
30#	@(#)genassym.c	7.8 (Berkeley) 5/7/91
31#
32
33include <sys/param.h>
34include <sys/proc.h>
35include <sys/mbuf.h>
36include <netinet/in.h>
37include <netinet/ip.h>
38
39include <uvm/uvm_extern.h>
40
41include <machine/pcb.h>
42include <machine/pmap.h>
43include <machine/vmparam.h>
44
45if MULTIPROCESSOR
46include <machine/cpu.h>
47endif
48
49include "isa.h"
50
51export	SONPROC
52
53# values for page tables
54export	PDSLOT_KERN
55export	PDSLOT_PTE
56export	PDSLOT_APTE
57export	NKPTP_MIN
58
59# values for virtual memory
60export	VM_MAXUSER_ADDRESS
61
62# proc fields and values
63struct	proc
64member	p_addr
65member	p_stat
66member	p_cpu
67member	P_MD_ASTPENDING	p_md.md_astpending
68
69export	P_SYSTEM
70
71# interrupt/fault metering
72struct	uvmexp		V_
73member	TRAP		traps
74member	INTR		intrs
75
76# pcb fields
77struct	pcb
78member	pcb_cr3
79member	pcb_ebp
80member	pcb_esp
81member	pcb_kstack
82member	pcb_cr0
83member	pcb_onfault
84member	pcb_fpcpu
85member	pcb_flags
86member	pcb_pmap
87export	PCB_SAVECTX
88
89# frame definitions
90struct	trapframe
91member	tf_cs
92member	tf_trapno
93member	tf_eflags
94member	tf_eip
95member	tf_err
96member	tf_eax
97member	tf_ecx
98member	tf_edx
99member	tf_ebx
100member	tf_ebp
101member	tf_esi
102member	tf_edi
103member	tf_ds
104member	tf_es
105member	tf_fs
106member	tf_gs
107member	tf_ss
108member	tf_esp
109define	FRAMESIZE	sizeof(struct trapframe)
110
111# interrupt frame definitions
112struct intrframe
113member if_ppl
114
115# iret stack frame
116struct	iretframe
117member	irf_trapno
118member	irf_err
119member	irf_eip
120member	irf_cs
121member	irf_eflags
122member	irf_esp
123member	irf_ss
124member	irf_vm86_es
125member	irf_vm86_ds
126member	irf_vm86_fs
127member	irf_vm86_gs
128define	SIZEOF_IRETFRAME	sizeof(struct iretframe)
129
130# trampoline stack frame
131struct trampframe
132member	trf__deadbeef
133member	trf__kern_esp
134member	trf_fs
135member	trf_eax
136member	trf_ebp
137member	trf_trapno
138member	trf_err
139member	trf_eip
140member	trf_cs
141member	trf_eflags
142member	trf_esp
143member	trf_ss
144member	trf_vm86_es
145member	trf_vm86_ds
146member	trf_vm86_fs
147member	trf_vm86_gs
148define	SIZEOF_TRAMPFRAME	sizeof(struct trampframe)
149
150# signal handling
151struct	sigframe	SIGF_
152member	HANDLER		sf_handler
153member	SC		sf_sc
154struct	sigcontext
155
156# mbuf fields
157struct	mbuf
158member	m_next
159member	m_data
160member	m_len
161
162# Interrupt metering
163if NISA > 0
164struct	intrhand
165member	ih_fun
166member	ih_arg
167member	IH_COUNT		ih_count.ec_count
168member	ih_next
169endif
170
171define	IP_SRC			offsetof(struct ip, ip_src)
172define	IP_DST			offsetof(struct ip, ip_dst)
173
174define	CPU_INFO_SCRATCH	offsetof(struct cpu_info, ci_scratch)
175define	CPU_INFO_SELF		offsetof(struct cpu_info, ci_self)
176define	CPU_INFO_APICID		offsetof(struct cpu_info, ci_apicid)
177define	CPU_INFO_CURPROC	offsetof(struct cpu_info, ci_curproc)
178define	CPU_INFO_CURPCB		offsetof(struct cpu_info, ci_curpcb)
179define	CPU_INFO_IDLE_PCB	offsetof(struct cpu_info, ci_idle_pcb)
180define	CPU_INFO_LEVEL		offsetof(struct cpu_info, ci_level)
181define	CPU_INFO_VENDOR		offsetof(struct cpu_info, ci_vendor[0])
182define	CPU_INFO_SIGNATURE	offsetof(struct cpu_info, ci_signature)
183define	CPU_INFO_RESCHED	offsetof(struct cpu_info, ci_want_resched)
184define	CPU_INFO_GDT		offsetof(struct cpu_info, ci_gdt)
185define	CPU_INFO_TSS		offsetof(struct cpu_info, ci_tss)
186define	CPU_INFO_IPENDING	offsetof(struct cpu_info, ci_ipending)
187define	CPU_INFO_IMASK		offsetof(struct cpu_info, ci_imask)
188define	CPU_INFO_IUNMASK	offsetof(struct cpu_info, ci_iunmask)
189define	CPU_INFO_ILEVEL		offsetof(struct cpu_info, ci_ilevel)
190define	CPU_INFO_IDEPTH		offsetof(struct cpu_info, ci_idepth)
191define	CPU_INFO_ISOURCES	offsetof(struct cpu_info, ci_isources)
192ifdef DIAGNOSTIC
193define	CPU_INFO_MUTEX_LEVEL	offsetof(struct cpu_info, ci_mutex_level)
194endif
195define	CPU_INFO_CURPMAP	offsetof(struct cpu_info, ci_curpmap)
196define	CPU_INFO_KERN_ESP	offsetof(struct cpu_info, ci_kern_esp)
197define	CPU_INFO_INTR_ESP	offsetof(struct cpu_info, ci_intr_esp)
198define	CPU_INFO_KERN_CR3	offsetof(struct cpu_info, ci_kern_cr3)
199define	CPU_INFO_USER_CR3	offsetof(struct cpu_info, ci_user_cr3)
200
201define	SIZEOF_CPU_INFO		sizeof(struct cpu_info)
202
203struct pmap
204member pm_pdirpa
205member pm_pdirpa_intel
206
207struct i386tss
208member	tss_esp0
209member	tss_ss
210member	tss_esp
211member	tss_eflags
212member	tss_cs
213member	tss_eip
214member	tss_eax
215member	tss_ecx
216member	tss_edx
217member	tss_ebx
218member	tss_ebp
219member	tss_esi
220member	tss_edi
221member	tss_ds
222member	tss_es
223member	tss_fs
224member	tss_gs
225