\ 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.
\
\ 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_kpri_req
	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
