summaryrefslogtreecommitdiff
path: root/usr/src/uts/sun4/ml/offsets.in
blob: f5e4233a220f28a7f9dd6ffd3d287d09838261f4 (plain)
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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
\ offsets.in: input file to produce assym.h using the stabs program
\ Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
\ Copyright 2012 Garrett D'Amore <garett@damore.org>.  All rights reserved.
\ Copyright 2019 Joyent, Inc.
\
\ CDDL HEADER START
\
\ The contents of this file are subject to the terms of the
\ Common Development and Distribution License (the "License").
\ You may not use this file except in compliance with the License.
\
\ You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
\ or http://www.opensolaris.org/os/licensing.
\ See the License for the specific language governing permissions
\ and limitations under the License.
\
\ When distributing Covered Code, include this CDDL HEADER in each
\ file and include the License file at usr/src/OPENSOLARIS.LICENSE.
\ If applicable, add the following below this CDDL HEADER, with the
\ fields enclosed by brackets "[]" replaced with your own identifying
\ information: Portions Copyright [yyyy] [name of copyright owner]
\
\ CDDL HEADER END
\
\
\
\ Guidelines:
\
\ A blank line is required between structure/union/intrinsic names.
\
\ The general form is:
\
\	name size_define [shift_define]
\		member_name [offset_define]
\	{blank line}
\
\ If offset_define is not specified then the member_name is
\ converted to all caps and used instead.  If the size of an item is
\ a power of two then an optional shift count may be output using
\ shift_define as the name but only if shift_define was specified.
\
\ Arrays cause stabs to automatically output the per-array-item increment
\ in addition to the base address:
\
\	 foo FOO_SIZE
\		array	FOO_ARRAY
\
\ results in:
\
\	#define	FOO_ARRAY	0x0
\	#define	FOO_ARRAY_INCR	0x4
\
\ which allows \#define's to be used to specify array items:
\
\	#define	FOO_0	(FOO_ARRAY + (0 * FOO_ARRAY_INCR))
\	#define	FOO_1	(FOO_ARRAY + (1 * FOO_ARRAY_INCR))
\	...
\	#define	FOO_n	(FOO_ARRAY + (n * FOO_ARRAY_INCR))
\
\ There are several examples below (search for _INCR).
\
\ There is currently no manner in which to identify "anonymous"
\ structures or unions so if they are to be used in assembly code
\ they must be given names.
\
\ When specifying the offsets of nested structures/unions each nested
\ structure or union must be listed separately then use the
\ "\#define" escapes to add the offsets from the base structure/union
\ and all of the nested structures/unions together.  See the many
\ examples already in this file.

#ifndef	_GENASSYM
#define	_GENASSYM
#endif

#define	SIZES	1

#include <sys/mutex_impl.h>
#include <sys/lockstat.h>
#include <sys/ddi_isa.h>
#include <sys/ivintr.h>
#include <sys/ddi_impldefs.h>
#include <vm/hat_sfmmu.h>
#include <sys/avintr.h>
#include <sys/strsubr.h>
#include <sys/dmv.h>
#include <sys/fpu/fpu_simulator.h>
#include <sys/ontrap.h>
#include <sys/lgrp.h>
#include <sys/ddifm_impl.h>
#include <sys/brand.h>

greg_t		GREGSIZE

uintptr_t	LWP_ARG_SZ

proc		PROCSIZE
	p_link
	p_next
	p_child
	p_sibling
	p_sig
	p_wcode
	p_flag
	p_tlist
	p_as
	p_lockp
	p_pidp
	p_fixalignment
	p_utraps
	p_agenttp
	p_brand
	p_brand_data

\#define	P_UTRAP4	(UT_ILLTRAP_INSTRUCTION * CPTRSIZE)
\#define	P_UTRAP7	(UT_FP_DISABLED * CPTRSIZE)
\#define	P_UTRAP8	(UT_FP_EXCEPTION_IEEE_754 * CPTRSIZE)
\#define	P_UTRAP10	(UT_TAG_OVERFLOW * CPTRSIZE)
\#define	P_UTRAP11	(UT_DIVISION_BY_ZERO * CPTRSIZE)
\#define	P_UTRAP15	(UT_MEM_ADDRESS_NOT_ALIGNED * CPTRSIZE)
\#define	P_UTRAP16	(UT_PRIVILEGED_ACTION * CPTRSIZE)

pid	PID_SIZE
	pid_id	PID_PIDID

_label_t	LABEL_SIZE
	val	LABEL_VAL

_kthread	THREAD_SIZE
	t_lock
	t_lock_flush
	t_lockp
	t_oldspl
	t_pri
	t_lwp
	t_procp
	t_link
	t_state
	t_mstate
	t_stk		T_STACK
	t_swap
	t_flag		T_FLAGS
	t_ctx
	t_pcb
	t_lofault
	t_onfault
	t_ontrap
	t_nomigrate
	t_cpu
	t_weakbound_cpu
	t_lpl
	t_bound_cpu
	t_intr
	t_forw
	t_back
	t_sig
	t_tid
	t_pre_sys
	t_preempt
	t_proc_flag
	t_startpc
	t_sysnum
	_tu._t_post_sys_ast	T_POST_SYS_AST
	_tu._ts._t_astflag	T_ASTFLAG
	_tu._ts._t_sig_check	T_SIG_CHECK
	_tu._ts._t_post_sys	T_POST_SYS
	_tu._ts._t_trapret	T_TRAPRET
	t_preempt_lk
	t_lockstat
	t_pil
	t_intr_start
	_tdu._tds._t_dtrace_on	T_DTRACE_ON
	_tdu._tds._t_dtrace_step T_DTRACE_STEP
	_tdu._tds._t_dtrace_ret	T_DTRACE_RET
	_tdu._tds._t_dtrace_ast	T_DTRACE_AST
	_tdu._t_dtrace_ft	T_DTRACE_FT
	t_dtrace_npc
	t_copyops

\#define	L_PC	(0 * LABEL_VAL_INCR)
\#define	L_SP	(1 * LABEL_VAL_INCR)

\#define	T_PC	(T_PCB + L_PC)
\#define	T_SP	(T_PCB + L_SP)

sysent	SYSENT_SIZE SYSENT_SHIFT
	sy_callc
	sy_flags

as	AS_SIZE
	a_hat
	a_userlimit

hmehash_bucket	HMEBUCK_SIZE
	hmeblkp	HMEBUCK_HBLK
	hmeh_nextpa	HMEBUCK_NEXTPA
	hmeh_listlock	HMEBUCK_LOCK

tte_t	TTE_SIZE
	ll	TTE_LL

ism_blk	ISMBLK_SIZE
	iblk_maps	IBLK_MAPS
	iblk_next	IBLK_NEXT
	iblk_nextpa	IBLK_NEXTPA

ism_map_t	ISM_MAP_SZ
	imap_seg	IMAP_SEG
	imap_vb_shift	IMAP_VB_SHIFT
	imap_rid	IMAP_RID
	imap_hatflags	IMAP_HATFLAGS
	imap_sz_mask	IMAP_SZ_MASK
	imap_ismhat	IMAP_ISMHAT

tsbe	TSBE_SIZE
	tte_tag		TSBE_TAG
	tte_data	TSBE_TTE

tsb_tag	TSBTAG_SIZE
	tagints.inthi	TSBTAG_INTHI
	tagints.intlo	TSBTAG_INTLO

hme_blk	HMEBLK_SIZE
	hblk_next	HMEBLK_NEXT
	hblk_tag	HMEBLK_TAG
	hblk_misc	HMEBLK_MISC
	hblk_hme	HMEBLK_HME1
	hblk_nextpa	HMEBLK_NEXTPA

mmu_ctx MMU_CTX_SIZE
	mmu_gnum	MMU_CTX_GNUM
	mmu_cnum	MMU_CTX_CNUM
	mmu_nctxs	MMU_CTX_NCTXS

sfmmu_ctx	SFMMU_MMU_CTX_SIZE SFMMU_MMU_CTX_SHIFT
	gnum		SFMMU_MMU_GC_NUM

user	USIZEBYTES
	u_comm
	u_signal

_klwp	LWP_SIZE
	lwp_thread
	lwp_regs
	lwp_fpu
	lwp_arg
	lwp_cursig
	lwp_ru.sysc			LWP_RU_SYSC
	lwp_state
	lwp_mstate.ms_start		LWP_MS_START
	lwp_mstate.ms_prev		LWP_MS_PREV
	lwp_mstate.ms_state_start	LWP_STATE_START
	lwp_mstate.ms_acct		LWP_MS_ACCT
	lwp_pcb.pcb_flags		PCB_FLAGS
	lwp_pcb.pcb_trap0addr		PCB_TRAP0
	lwp_pcb.pcb_step		PCB_STEP
	lwp_pcb.pcb_tracepc		PCB_TRACEPC

mstate	MSTATE_SIZE
	ms_start
	ms_prev
	ms_term
	ms_state_start
	ms_acct

\#define	LWP_ACCT_USER	(LWP_MS_ACCT + (LMS_USER * LWP_MS_ACCT_INCR))
\#define	LWP_ACCT_SYSTEM (LWP_MS_ACCT + (LMS_SYSTEM * LWP_MS_ACCT_INCR))

rwindow32	RWIN32SIZE	RWIN32SHIFT
	rw_local	RW32_LOCAL
	rw_in		RW32_IN

rwindow64	RWIN64SIZE	RWIN64SHIFT
	rw_local	RW64_LOCAL
	rw_in		RW64_IN

machpcb	MPCBSIZE
	mpcb_regs
	mpcb_wbuf
	mpcb_spbuf
	mpcb_wbcnt
	mpcb_rwin
	mpcb_rsp
	mpcb_flags
	mpcb_thread
	mpcb_wstate
	mpcb_pa		MPCB_PA
	mpcb_wbuf_pa

\#define	MPCB_RWIN0	(MPCB_RWIN + (0 * MPCB_RWIN_INCR))
\#define	MPCB_RWIN1	(MPCB_RWIN + (1 * MPCB_RWIN_INCR))
\#define	MPCB_RSP0	(MPCB_RSP + (0 * MPCB_RSP_INCR))
\#define	MPCB_RSP1	(MPCB_RSP + (1 * MPCB_RSP_INCR))

kfpu_t	KFPUSIZE
	fpu_fr.fpu_regs		FPU_REGS
	fpu_fsr
	fpu_fprs
	fpu_q
	fpu_qcnt
	fpu_en

\#define	FPU_GSR		KFPUSIZE

regs	REGSIZE
	r_tstate	TSTATE_OFF
	r_g1		G1_OFF
	r_g2		G2_OFF
	r_g3		G3_OFF
	r_g4		G4_OFF
	r_g5		G5_OFF
	r_g6		G6_OFF
	r_g7		G7_OFF
	r_o0		O0_OFF
	r_o1		O1_OFF
	r_o2		O2_OFF
	r_o3		O3_OFF
	r_o4		O4_OFF
	r_o5		O5_OFF
	r_o6		O6_OFF
	r_o7		O7_OFF
	r_pc		PC_OFF
	r_npc		NPC_OFF
	r_y		Y_OFF

\ XXX - doesn't preserve case up above
\#define	nPC_OFF		NPC_OFF

autovec		AUTOVECSIZE
	av_vector
	av_intarg

cpu	CPUSIZE
	cpu_id
	cpu_flags
	cpu_thread
	cpu_thread_lock
	cpu_kprunrun
	cpu_lwp
	cpu_fpowner
	cpu_idle_thread
	cpu_intr_thread
	cpu_intr_actv
	cpu_base_spl
	cpu_intr_stack
	cpu_stats.sys.cpumigrate	CPU_STATS_SYS_CPUMIGRATE
	cpu_stats.sys.intr		CPU_STATS_SYS_INTR
	cpu_stats.sys.intrunpin		CPU_STATS_SYS_INTRUNPIN
	cpu_stats.sys.intrblk		CPU_STATS_SYS_INTRBLK
	cpu_stats.sys.syscall		CPU_STATS_SYS_SYSCALL
	cpu_profile_pc
	cpu_profile_upc
	cpu_profile_pil
	cpu_ftrace.ftd_state		CPU_FTRACE_STATE
	cpu_mstate
	cpu_intracct
	cpu_cpcprofile_pc
	cpu_cpcprofile_upc
	cpu_m				CPU_MCPU
	cpu_m.divisor			CPU_DIVISOR
	cpu_m.intrstat			CPU_INTRSTAT
	cpu_m.pil_high_start		CPU_PIL_HIGH_START
	cpu_m.intr_tail			INTR_TAIL
	cpu_m.intr_head			INTR_HEAD
	cpu_m.tl1_hdlr			CPU_TL1_HDLR
	cpu_m.intrcnt			CPU_INTRCNT
	cpu_m.tmp1			CPU_TMP1
	cpu_m.tmp2			CPU_TMP2
	cpu_m.tmp3			CPU_TMP3
	cpu_m.tmp4			CPU_TMP4
	cpu_m.ofd			CPU_OFD
	cpu_m.lfd			CPU_LFD
	cpu_m.otd			CPU_OTD
	cpu_m.mpcb			CPU_MPCB
	cpu_m.cpu_private		CPU_PRIVATE
	cpu_m.cpu_mmu_idx		CPU_MMU_IDX
	cpu_m.cpu_mmu_ctxp		CPU_MMU_CTXP
	cpu_m.ptl1_state		CPU_PTL1

cpu_core_t	CPU_CORE_SIZE	CPU_CORE_SHIFT
	cpuc_dtrace_flags
	cpuc_dtrace_illval

cpuset_t	CPUSET_SIZE

ptl1_state	PTL1_STATE_SIZE
	ptl1_regs
	ptl1_entry_count
	ptl1_stktop

ptl1_trapregs
	ptl1_tl
	ptl1_tt
	ptl1_tstate
	ptl1_tpc
	ptl1_tnpc

lgrp_ld		LGRP_LD_SIZE
	lpl_loadavg
	lpl_ncpu
	lpl_lgrpid

intr_vec IV_SIZE
	iv_inum
	iv_pil
	iv_flags
	iv_pad
	iv_handler
	iv_arg1
	iv_arg2
	iv_payload_buf
	iv_vec_next
	iv_pil_next

dmv_disp DMV_DISP_SIZE DMV_DISP_SHIFT
	dmv_func
	dmv_arg

spin_mutex SM_SIZE
	m_spinlock

i_ndi_err	NDI_ERR_SIZE
	err_ena
	err_status
	err_ontrap

ddi_acc_impl	DDI_ACC_IMPL_SIZE
	ahi_common
	ahi_get8
	ahi_get16
	ahi_get32
	ahi_get64
	ahi_put8
	ahi_put16
	ahi_put32
	ahi_put64
	ahi_rep_get8
	ahi_rep_get16
	ahi_rep_get32
	ahi_rep_get64
	ahi_rep_put8
	ahi_rep_put16
	ahi_rep_put32
	ahi_rep_put64
	ahi_fault_check
	ahi_fault
	ahi_err

stdata	STDATA_SIZE
	sd_lock

queue	 Q_SIZE
	q_flag
	q_next
	q_stream
	q_syncq
	q_qinfo

qinit	QI_SIZE
	qi_putp

syncq	SQ_SIZE
	sq_flags
	sq_count
	sq_lock
	sq_wait
	sq_exitwait

bus_ops		BUS_OPS_SIZE
	bus_dma_allochdl	OPS_ALLOCHDL
	bus_dma_freehdl		OPS_FREEHDL
	bus_dma_bindhdl		OPS_BINDHDL
	bus_dma_unbindhdl	OPS_UNBINDHDL
	bus_dma_flush		OPS_FLUSH
	bus_dma_win		OPS_WIN
	bus_dma_ctl		OPS_MCTL
	bus_ctl			OPS_CTL

dev_ops		DEV_OPS_SIZE
	devo_bus_ops	DEVI_BUS_OPS

dev_info	DEVI_SIZE
	devi_ops	DEVI_DEV_OPS
	devi_bus_dma_win
	devi_bus_dma_allochdl
	devi_bus_dma_freehdl
	devi_bus_dma_bindhdl
	devi_bus_dma_unbindhdl
	devi_bus_dma_flush
	devi_bus_dma_unbindfunc
	devi_bus_ctl
	devi_bus_dma_ctl

kstat_io
	wtime		KSTAT_IO_WTIME
	wlentime	KSTAT_IO_WLENTIME
	wlastupdate	KSTAT_IO_WLASTUPDATE
	rtime		KSTAT_IO_RTIME
	rlentime	KSTAT_IO_RLENTIME
	rlastupdate	KSTAT_IO_RLASTUPDATE
	wcnt		KSTAT_IO_WCNT
	rcnt		KSTAT_IO_RCNT

ddi_dma_impl
	dmai_rflags	DMA_HANDLE_RFLAGS
	dmai_rdip	DMA_HANDLE_RDIP

on_trap_data
	ot_prot
	ot_trap
	ot_trampoline
	ot_jmpbuf
	ot_prev
	ot_handle
	ot_pad1

fpustat_kstat	FPUSTAT_KSTAT_SIZE
	fpu_unfinished_traps.value	FPUSTAT_UNFIN_KSTAT

fpuinfo_kstat	FPUINFO_KSTAT_SIZE
	fpu_sim_fitos.value		FPUINFO_FITOS_KSTAT

mod_stub_info	MODS_SIZE
	mods_func_adr	MODS_INSTFCN
	mods_errfcn	MODS_RETFCN
	mods_flag	MODS_FLAG

copyops
	cp_copyin
	cp_xcopyin
	cp_copyout
	cp_xcopyout
	cp_copyinstr
	cp_copyoutstr
	cp_fuword8
	cp_fuword16
	cp_fuword32
	cp_fuword64
	cp_suword8
	cp_suword16
	cp_suword32
	cp_suword64
	cp_physio

brand	BRAND_SIZE
	b_machops

brand_proc_data_t
	spd_handler