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