\
\ 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
\
\ Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
\ Use is subject to license terms.
\
\ offsets.in: input file to produce assym.h using the stabs program
\
\
\ 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 no individual member_name's are specified then NO members are processed.
\ 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

#include <vm/hat_sfmmu.h>
#include <sys/spitregs.h>
#include <sys/cheetahregs.h>
#include <sys/fpras_impl.h>
#include <sys/traptrace.h>

machcpu
	intrstat		MCPU_INTRSTAT
	pil_high_start		MCPU_PIL_HIGH_START

trap_trace_record	TRAP_ENT_SIZE
	tt_tl		TRAP_ENT_TL
	tt_tt		TRAP_ENT_TT
	tt_tpc		TRAP_ENT_TPC
	tt_tstate	TRAP_ENT_TSTATE
	tt_tick		TRAP_ENT_TICK
	tt_sp		TRAP_ENT_SP
	tt_tr		TRAP_ENT_TR
	tt_f1		TRAP_ENT_F1
	tt_f2		TRAP_ENT_F2
	tt_f3		TRAP_ENT_F3
	tt_f4		TRAP_ENT_F4

hat     HAT_SIZE
        sfmmu_cpusran
        sfmmu_tsb
        sfmmu_ismblkpa
        sfmmu_tteflags
        sfmmu_rtteflags
        sfmmu_srdp
        sfmmu_region_map.h_rmap_s.hmeregion_map SFMMU_HMERMAP
        sfmmu_scdp
        sfmmu_cext
        sfmmu_ctx_lock
        sfmmu_ctxs

sf_scd SCD_SIZE
        scd_sfmmup
        scd_region_map.h_rmap_s.hmeregion_map   SCD_HMERMAP

sfmmu_global_stat HATSTAT_SIZE
        sf_pagefaults           HATSTAT_PAGEFAULT
        sf_uhash_searches       HATSTAT_UHASH_SEARCH
        sf_uhash_links          HATSTAT_UHASH_LINKS
        sf_khash_searches       HATSTAT_KHASH_SEARCH
        sf_khash_links          HATSTAT_KHASH_LINKS

sf_hment        SFHME_SIZE      SFHME_SHIFT
        hme_tte         SFHME_TTE

tsbmiss         TSBMISS_SIZE
        ksfmmup         TSBMISS_KHATID
        usfmmup         TSBMISS_UHATID
        usrdp           TSBMISS_SHARED_UHATID
        tsbptr          TSBMISS_TSBPTR
        tsbptr4m        TSBMISS_TSBPTR4M
        tsbscdptr       TSBMISS_TSBSCDPTR
        tsbscdptr4m     TSBMISS_TSBSCDPTR4M
        ismblkpa        TSBMISS_ISMBLKPA
        khashstart      TSBMISS_KHASHSTART
        uhashstart      TSBMISS_UHASHSTART
        khashsz         TSBMISS_KHASHSZ
        uhashsz         TSBMISS_UHASHSZ
	dcache_line_mask TSBMISS_DMASK
        uhat_tteflags   TSBMISS_UTTEFLAGS
        uhat_rtteflags  TSBMISS_URTTEFLAGS
        utsb_misses     TSBMISS_UTSBMISS
        ktsb_misses     TSBMISS_KTSBMISS
        uprot_traps     TSBMISS_UPROTS
        kprot_traps     TSBMISS_KPROTS
        scratch         TSBMISS_SCRATCH
        shmermap        TSBMISS_SHMERMAP
        scd_shmermap    TSBMISS_SCDSHMERMAP

\#define        TSB_TAGACC      (0 * TSBMISS_SCRATCH_INCR)
\#define        TSBMISS_HMEBP   (1 * TSBMISS_SCRATCH_INCR)
\#define        TSBMISS_HATID   (2 * TSBMISS_SCRATCH_INCR)

kpmtsbm		KPMTSBM_SIZE KPMTSBM_SHIFT
	vbase		KPMTSBM_VBASE
	vend		KPMTSBM_VEND
	flags		KPMTSBM_FLAGS
	sz_shift	KPMTSBM_SZSHIFT
	kpmp_shift	KPMTSBM_KPMPSHIFT
	kpmp2pshft	KPMTSBM_KPMP2PSHFT
	kpmp_table_sz	KPMTSBM_KPMPTABLESZ
	kpmp_tablepa	KPMTSBM_KPMPTABLEPA
	msegphashpa	KPMTSBM_MSEGPHASHPA
	tsbptr		KPMTSBM_TSBPTR
	kpm_dtlb_misses	KPMTSBM_DTLBMISS
	kpm_tsb_misses	KPMTSBM_TSBMISS

kpm_page	KPMPAGE_SIZE KPMPAGE_SHIFT
	kp_refcnt	KPMPAGE_REFCNT
	kp_refcnta	KPMPAGE_REFCNTA
	kp_refcntc	KPMPAGE_REFCNTC
	kp_refcnts	KPMPAGE_REFCNTS

kpm_hlk		KPMHLK_SIZE KPMHLK_SHIFT
	khl_mutex	KPMHLK_MUTEX
	khl_lock	KPMHLK_LOCK

kpm_spage	KPMSPAGE_SIZE KPMSPAGE_SHIFT
	kp_mapped_flag	KPMSPAGE_MAPPED

kpm_shlk	KPMSHLK_SIZE KPMSHLK_SHIFT
	kshl_lock	KPMSHLK_LOCK

memseg		MEMSEG_SIZE
	pages		MEMSEG_PAGES
	epages		MEMSEG_EPAGES
	pages_base	MEMSEG_PAGES_BASE
	pages_end	MEMSEG_PAGES_END
	next		MEMSEG_NEXT
	lnext		MEMSEG_LNEXT
	nextpa		MEMSEG_NEXTPA	
	pagespa		MEMSEG_PAGESPA
	epagespa	MEMSEG_EPAGESPA
	kpm_pbase	MEMSEG_KPM_PBASE
	kpm_nkpmpgs	MEMSEG_KPM_NKPMPGS
	mseg_un
	kpm_pagespa	MEMSEG_KPM_PAGESPA

\#define	MEMSEG_KPM_PAGES	(MSEG_UN)
\#define	MEMSEG_KPM_SPAGES	(MSEG_UN)

page		PAGE_SIZE
	p_pagenum	PAGE_PAGENUM

tsb_info	TSBINFO_SIZE
	tsb_tte		TSBINFO_TTE
	tsb_va		TSBINFO_VADDR
	tsb_pa		TSBINFO_PADDR
	tsb_szc		TSBINFO_SZCODE
	tsb_next	TSBINFO_NEXTPTR

cpu_node	CPU_NODE_SIZE
	implementation
	version
	nodeid
	clock_freq
	tick_nsec_scale
	ecache_size	ECACHE_SIZE
	ecache_linesize	ECACHE_LINESIZE
	device_id	DEVICE_ID
	itlb_size	ITLB_SIZE
	dtlb_size	DTLB_SIZE

spitfire_scrub_misc_t
	ec_scrub_outstanding

spitfire_private_t
	sfpr_scrub_misc
	sfpr_scrub_afsr

cheetah_private_t
	chpr_icache_size
	chpr_icache_linesize
	chpr_tl1_err_data
	chpr_scrub_misc
	chpr_fecctl0_logout
	chpr_cecc_logout
	chpr_async_logout
	chpr_tlb_logout
	chpr_fpras_timestamp

ch_scrub_misc_t
	chsm_outstanding

ch_cpu_logout_t		CH_CPU_LOGOUT_SIZE
	clo_flags	CH_CLO_FLAGS
	clo_nest_cnt	CH_CLO_NEST_CNT
	clo_data	CH_CLO_DATA
	clo_sdw_data	CH_CLO_SDW_DATA

ch_err_tl1_data_t	CH_ERR_TL1_DATA_SIZE
	ch_err_tl1_g1
	ch_err_tl1_g2
	ch_err_tl1_g3
	ch_err_tl1_g4
	ch_err_tl1_g5
	ch_err_tl1_g6
	ch_err_tl1_g7
	ch_err_tl1_tpc
	ch_err_tl1_flags
	ch_err_tl1_tmp
	ch_err_tl1_logout

ch_cpu_errors_t         CH_CPU_ERROR_SIZE
	afsr		CH_CPU_ERRORS_AFSR
	afar		CH_CPU_ERRORS_AFAR
	shadow_afsr	CH_CPU_ERRORS_SHADOW_AFSR
	shadow_afar	CH_CPU_ERRORS_SHADOW_AFAR
	afsr_ext	CH_CPU_ERRORS_AFSR_EXT
	shadow_afsr_ext	CH_CPU_ERRORS_SHADOW_AFSR_EXT
	afar2		CH_CPU_ERRORS_AFAR2

ch_diag_data_t		CH_DIAG_DATA_SIZE
	chd_afar	CH_CHD_AFAR
	chd_afar2	CH_CHD_AFAR2
	chd_afsr	CH_CHD_AFSR
	chd_afsr_ext	CH_CHD_AFSR_EXT
	chd_ec_data	CH_CHD_EC_DATA
	chd_l2_data	CH_CHD_L2_DATA
	chd_dc_data	CH_CHD_DC_DATA
	chd_ic_data	CH_CHD_IC_DATA

ch_ec_data_t		CH_EC_DATA_SIZE
	ec_idx		CH_EC_IDX
	ec_tag		CH_EC_TAG
	ec_tag_ecc	CH_EC_TAG_ECC
	ec_data		CH_EC_DATA

ch_dc_data		CH_DC_DATA_SIZE
	dc_idx		CH_DC_IDX
	dc_way		CH_DC_WAY
	dc_tag		CH_DC_TAG
	dc_utag		CH_DC_UTAG
	dc_sntag	CH_DC_SNTAG
	dc_data		CH_DC_DATA
	dc_pn_data_parity	CH_DC_PN_DATA_PARITY

ch_ic_data		CH_IC_DATA_SIZE
	ic_idx		CH_IC_IDX
	ic_way		CH_IC_WAY
	ic_patag	CH_IC_PATAG
	ic_utag		CH_IC_UTAG
	ic_upper	CH_IC_UPPER
	ic_lower	CH_IC_LOWER
	ic_sntag	CH_IC_SNTAG
	ic_data		CH_IC_DATA

fpras_chkfn		FPRAS_CHKFN_SIZE FPRAS_CHKFN_SIZE_SHIFT
	fpras_blk0

fpras_chkfngrp		FPRAS_CHKFNGRP_SIZE FPRAS_CHKFNGRP_SIZE_SHIFT

ch_pc_data		CH_PC_DATA_SIZE
	pc_idx		CH_PC_IDX
	pc_way		CH_PC_WAY
	pc_status	CH_PC_STATUS
	pc_tag		CH_PC_TAG
	pc_sntag	CH_PC_SNTAG
	pc_data		CH_PC_DATA

pn_tlb_logout		PN_TLO_SIZE
	tlo_info	PN_TLO_INFO
	tlo_addr	PN_TLO_ADDR
	tlo_pc		PN_TLO_PC
	tlo_itlb_tte	PN_TLO_ITLB_TTE
	tlo_dtlb_tte	PN_TLO_DTLB_TTE

ch_tte_entry		CH_TLO_TTE_SIZE
	ch_tte_tag	CH_TLO_TTE_TAG
	ch_tte_data	CH_TLO_TTE_DATA

ptl1_regs
	ptl1_trap_regs
	ptl1_g1
	ptl1_g2
	ptl1_g3
	ptl1_g4
	ptl1_g5
	ptl1_g6
	ptl1_g7
	ptl1_tick
	ptl1_dmmu_sfar
	ptl1_dmmu_sfsr
	ptl1_dmmu_tag_access
	ptl1_immu_sfsr
	ptl1_immu_tag_access
	ptl1_rwindow
	ptl1_softint
	ptl1_pstate
	ptl1_pil
	ptl1_cwp
	ptl1_wstate
	ptl1_otherwin
	ptl1_cleanwin
	ptl1_cansave
	ptl1_canrestore

