1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
|
# $OpenBSD: genassym.cf,v 1.1 2001/05/11 09:45:22 art Exp $
# Copyright (c) 1994, 1995 Gordon W. Ross
# Copyright (c) 1993 Adam Glass
# Copyright (c) 1982, 1990, 1993
# The Regents of the University of California. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# 3. All advertising materials mentioning features or use of this software
# must display the following acknowledgement:
# This product includes software developed by the University of
# California, Berkeley and its contributors.
# 4. Neither the name of the University nor the names of its contributors
# may be used to endorse or promote products derived from this software
# without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
# OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
# SUCH DAMAGE.
include <sys/param.h>
include <sys/buf.h>
include <sys/map.h>
include <sys/proc.h>
include <sys/mbuf.h>
include <sys/msgbuf.h>
include <sys/syscall.h>
include <sys/user.h>
include <machine/cpu.h>
include <machine/reg.h>
include <machine/frame.h>
include <machine/rpb.h>
include <machine/vmparam.h>
ifdef COMPAT_NETBSD
include <compat/netbsd/netbsd_syscall.h>
endif
include <vm/vm.h>
# general constants
define NBPG NBPG
define PGSHIFT PGSHIFT
define VM_MAX_ADDRESS VM_MAX_ADDRESS
# Register offsets, for stack frames.
define FRAME_V0 FRAME_V0
define FRAME_T0 FRAME_T0
define FRAME_T1 FRAME_T1
define FRAME_T2 FRAME_T2
define FRAME_T3 FRAME_T3
define FRAME_T4 FRAME_T4
define FRAME_T5 FRAME_T5
define FRAME_T6 FRAME_T6
define FRAME_T7 FRAME_T7
define FRAME_S0 FRAME_S0
define FRAME_S1 FRAME_S1
define FRAME_S2 FRAME_S2
define FRAME_S3 FRAME_S3
define FRAME_S4 FRAME_S4
define FRAME_S5 FRAME_S5
define FRAME_S6 FRAME_S6
define FRAME_A3 FRAME_A3
define FRAME_A4 FRAME_A4
define FRAME_A5 FRAME_A5
define FRAME_T8 FRAME_T8
define FRAME_T9 FRAME_T9
define FRAME_T10 FRAME_T10
define FRAME_T11 FRAME_T11
define FRAME_RA FRAME_RA
define FRAME_T12 FRAME_T12
define FRAME_AT FRAME_AT
define FRAME_SP FRAME_SP
define FRAME_SW_SIZE FRAME_SW_SIZE
define FRAME_PS FRAME_PS
define FRAME_PC FRAME_PC
define FRAME_GP FRAME_GP
define FRAME_A0 FRAME_A0
define FRAME_A1 FRAME_A1
define FRAME_A2 FRAME_A2
define FRAME_SIZE FRAME_SIZE
# bits of the PS register
define ALPHA_PSL_USERMODE ALPHA_PSL_USERMODE
define ALPHA_PSL_IPL_MASK ALPHA_PSL_IPL_MASK
define ALPHA_PSL_IPL_0 ALPHA_PSL_IPL_0
define ALPHA_PSL_IPL_SOFT ALPHA_PSL_IPL_SOFT
define ALPHA_PSL_IPL_HIGH ALPHA_PSL_IPL_HIGH
# pte bits
define ALPHA_PTE_VALID ALPHA_PTE_VALID
define ALPHA_PTE_ASM ALPHA_PTE_ASM
define ALPHA_PTE_KR ALPHA_PTE_KR
define ALPHA_PTE_KW ALPHA_PTE_KW
# Important offsets into the proc struct & associated constants
define P_FORW offsetof(struct proc, p_forw)
define P_BACK offsetof(struct proc, p_back)
define P_ADDR offsetof(struct proc, p_addr)
define P_VMSPACE offsetof(struct proc, p_vmspace)
define P_STAT offsetof(struct proc, p_stat)
define P_MD_FLAGS offsetof(struct proc, p_md.md_flags)
define P_MD_PCBPADDR offsetof(struct proc, p_md.md_pcbpaddr)
define PH_LINK offsetof(struct prochd, ph_link)
define PH_RLINK offsetof(struct prochd, ph_rlink)
# offsets needed by cpu_switch() to switch mappings.
define VM_MAP_PMAP offsetof(struct vmspace, vm_map.pmap)
# Important offsets into the user struct & associated constants
define UPAGES UPAGES
define U_PCB offsetof(struct user, u_pcb)
define U_PCB_HWPCB offsetof(struct user, u_pcb.pcb_hw)
define U_PCB_HWPCB_KSP offsetof(struct user, u_pcb.pcb_hw.apcb_ksp)
define U_PCB_CONTEXT offsetof(struct user, u_pcb.pcb_context[0])
define U_PCB_ONFAULT offsetof(struct user, u_pcb.pcb_onfault)
define U_PCB_ACCESSADDR offsetof(struct user, u_pcb.pcb_accessaddr)
# Offsets into struct fpstate, for save, restore
define FPREG_FPR_REGS offsetof(struct fpreg, fpr_regs[0])
define FPREG_FPR_CR offsetof(struct fpreg, fpr_cr)
# Important other addresses
define HWRPB_ADDR HWRPB_ADDR
define VPTBASE VPTBASE
# Offsets into the HWRPB.
define RPB_PRIMARY_CPU_ID offsetof(struct rpb, rpb_primary_cpu_id)
# Kernel entries
define ALPHA_KENTRY_ARITH ALPHA_KENTRY_ARITH
define ALPHA_KENTRY_MM ALPHA_KENTRY_MM
define ALPHA_KENTRY_IF ALPHA_KENTRY_IF
define ALPHA_KENTRY_UNA ALPHA_KENTRY_UNA
# errno values
define ENAMETOOLONG ENAMETOOLONG
define EFAULT EFAULT
# Syscalls called from sigreturn.
define SYS_sigreturn SYS_sigreturn
define SYS_exit SYS_exit
ifdef COMPAT_NETBSD
# XXX - these should probably use the magic macro from machine/asm.h
define NETBSD_SYS___sigreturn14 NETBSD_SYS___sigreturn14
define NETBSD_SYS_exit NETBSD_SYS_exit
endif
# CPU info
define CPU_INFO_CURPROC offsetof(struct cpu_info, ci_curproc)
define CPU_INFO_FPCURPROC offsetof(struct cpu_info, ci_fpcurproc)
define CPU_INFO_CURPCB offsetof(struct cpu_info, ci_curpcb)
define CPU_INFO_IDLE_PCB_PADDR offsetof(struct cpu_info, ci_idle_pcb_paddr)
define CPU_INFO_WANT_RESCHED offsetof(struct cpu_info, ci_want_resched)
define CPU_INFO_ASTPENDING offsetof(struct cpu_info, ci_astpending)
define CPU_INFO_SIZEOF sizeof(struct cpu_info)
|