|
|
/*++ BUILD Version: 0000 Increment this if a change has global effects
Copyright (c) 1994 Digital Euipment Corporation
Module Name:
axp21164.h
Abstract:
This module defines the DECchip 21164-specific structures that are defined in the PAL but must be visible to the HAL.
Revision History:
--*/
#ifndef _AXP21164_
#define _AXP21164_
//
// Define the "special" processor bus used by all machines that run a
// DECchip 21164. The processor bus is used to access the internal
// performance counters.
//
#define PROCESSOR_BUS_21164 21164
//
// Define the physical address bit that turns on user-mode access
// to I/O space in the pfn of a pte. This bit is required because of
// the current 36 bit physical address space limit on NT.
//
#define EV5_USER_IO_ADDRESS_SPACE (ULONGLONG)(0x800000000)
#define EV5_IO_BASE_PHYSICAL 0x8000000000
//
// Define the number of entries for repeated internal processor registers.
//
#define ITB_ENTRIES_21164 32
#define DTB_ENTRIES_21164 64
#define PAL_TEMPS_21164 24
//
// Define the Ibox Internal Processor Register formats.
//
//
// Define the ITB_PTE - write format.
//
typedef union _ITB_PTE_21164{ struct { ULONG Ignore1: 4; ULONG Asm: 1; ULONG Gh: 2; ULONG Ignore2: 1; ULONG Kre: 1; ULONG Ere: 1; ULONG Sre: 1; ULONG Ure: 1; ULONG Ignore3: 20; ULONG Pfn: 27; ULONG Ignore4: 5; } ; ULONGLONG all; } ITB_PTE_21164, *PITB_PTE_21164;
//
// Define the ITB_PTE_TEMP - read format.
//
typedef union _ITB_PTE_TEMP_21164{ struct { ULONG Raz1: 13; ULONG Asm: 1; ULONG Raz2: 4; ULONG Kre: 1; ULONG Ere: 1; ULONG Sre: 1; ULONG Ure: 1; ULONG Raz3: 7; ULONG Ghd: 3; ULONG Pfn: 27; ULONG Raz4: 5; } ; ULONGLONG all; } ITB_PTE_TEMP_21164, *PITB_PTE_TEMP_21164;
//
// Define the ITB_ASN.
//
typedef union _ITB_ASN_21164{ struct { ULONG Raz1: 4; ULONG Asn: 7; ULONG Raz2: 21; ULONG Raz3: 32; } ; ULONGLONG all; } ITB_ASN_21164, *PITB_ASN_21164;
//
// Define the ICPERR_STAT.
//
typedef union _ICPERR_STAT_21164{ struct { ULONG Raz1: 11; ULONG Dpe: 1; ULONG Tpe: 1; ULONG Tmr: 1; ULONG Raz2: 18; ULONG Raz3: 32; } ; ULONGLONG all; } ICPERR_STAT_21164, *PICPERR_STAT_21164;
//
// Define the EXC_SUM.
//
typedef union _EXC_SUM_21164{ struct { ULONG Raz1: 10; ULONG Swc: 1; ULONG Inv: 1; ULONG Dze: 1; ULONG Fov: 1; ULONG Unf: 1; ULONG Ine: 1; ULONG Iov: 1; ULONG Raz2: 15; ULONG Raz3: 32; } ; ULONGLONG all; } EXC_SUM_21164, *PEXC_SUM_21164;
//
// Define the PS.
//
typedef union _PS_21164{ struct { ULONG Raz1: 3; ULONG Cm0: 1; ULONG Cm1: 1; ULONG Raz2: 27; ULONG Raz3: 32; } ; ULONGLONG all; } PS_21164, *PPS_21164;
//
// Define the ICSR.
//
typedef union _ICSR_21164{ struct { ULONG Raz1: 8; ULONG Pme: 2; ULONG Raz2: 7; ULONG Byte: 1; ULONG Raz3: 1; ULONG Mve: 1; // PCA56
ULONG Imsk: 4; ULONG Tmm: 1; ULONG Tmd: 1; ULONG Fpe: 1; ULONG Hwe: 1; ULONG Sp32: 1; ULONG Sp43: 1; ULONG Sde: 1; ULONG Raz4: 1; ULONG Crde: 1; ULONG Sle: 1; ULONG Fms: 1; ULONG Fbt: 1; ULONG Fbd: 1; ULONG Dbs: 1; ULONG Ista: 1; ULONG Tst: 1; ULONG Raz5: 24; } ; ULONGLONG all; } ICSR_21164, *PICSR_21164;
//
// Define the SIRR.
//
typedef union _SIRR_21164{ struct { ULONG Raz1: 4; ULONG Sir: 15; ULONG Raz2: 13; ULONG Raz3: 32; } ; ULONGLONG all; } SIRR_21164, *PSIRR_21164;
//
// Define the HWINT_CLR.
//
typedef union _HWINT_CLR_21164{ struct { ULONG Raz1: 27; ULONG Pc0c: 1; ULONG Pc1c: 1; ULONG Pc2c: 1; ULONG Raz2: 2; ULONG Crdc: 1; ULONG Slc: 1; ULONG Raz3: 30; } ; ULONGLONG all; } HWINT_CLR_21164, *PHW_INTCLR_21164;
//
// Define the ISR.
//
typedef union _ISR_21164{ struct { ULONG Ast: 4; ULONG Sirr: 15; ULONG Atr: 1; ULONG I20: 1; ULONG I21: 1; ULONG I22: 1; ULONG I23: 1; ULONG Raz1: 3; ULONG Pc0: 1; ULONG Pc1: 1; ULONG Pc2: 1; ULONG Pfl: 1; ULONG Mck: 1; ULONG Crd: 1; ULONG Sli: 1; ULONG Hlt: 1; ULONG Raz2: 29; } ; ULONGLONG all; } ISR_21164, *PISR_21164;
//
// Define the PMCTR.
//
typedef union _PMCTR_21164{ struct { ULONG Sel2: 4; ULONG Sel1: 4; ULONG Kk: 1; ULONG Kp: 1; ULONG Ctl2: 2; ULONG Ctl1: 2; ULONG Ctl0: 2; ULONG Ctr2: 14; ULONG Ku: 1; ULONG Sel0: 1; ULONG Ctr1: 16; ULONG Ctr0: 16; } ; ULONGLONG all; } PMCTR_21164, *PPMCTR_21164;
//
// Define the Mbox and Dcache Internal Processor Register formats.
//
//
// Define the DTB_ASN.
//
typedef union _DTB_ASN_21164{ struct { ULONG Raz1: 32; ULONG Raz2: 25; ULONG Asn: 7; } ; ULONGLONG all; } DTB_ASN_21164, *PDTB_ASN_21164;
//
// Define the DTB_CM.
//
typedef union _DTB_CM_21164{ struct { ULONG Raz1: 3; ULONG Cm0: 1; ULONG Cm1: 1; ULONG Raz2: 27; ULONG Raz3: 32; } ; ULONGLONG all; } DTB_CM_21164, *PDTB_CM_21164;
//
// Define the DTB_PTE.
//
typedef union _DTB_PTE_21164{ struct { ULONG Ignore1: 1; ULONG For: 1; ULONG Fow: 1; ULONG Ignore2: 1; ULONG Asm: 1; ULONG Gh: 2; ULONG Ignore3: 1; ULONG Kre: 1; ULONG Ere: 1; ULONG Sre: 1; ULONG Ure: 1; ULONG Kwe: 1; ULONG Ewe: 1; ULONG Swe: 1; ULONG Uwe: 1; ULONG Ignore4: 16; ULONG Pfn: 27; ULONG Ignore5: 5; } ; ULONGLONG all; } DTB_PTE_21164, *PDTB_PTE_21164;
//
// Define the DTB_PTE_TEMP.
//
typedef union _DTB_PTE_TEMP_21164{ struct { ULONG For: 1; ULONG Fow: 1; ULONG Kre: 1; ULONG Ere: 1; ULONG Sre: 1; ULONG Ure: 1; ULONG Kwe: 1; ULONG Ewe: 1; ULONG Swe: 1; ULONG Uwe: 1; ULONG Raz1: 3; ULONG Pfn31_13: 19; ULONG Pfn39_32: 8; ULONG Raz2: 24; } ; ULONGLONG all; } DTB_PTE_TEMP_21164, *PDTB_PTE_TEMP_21164;
//
// Define the MM_STAT.
//
typedef union _MM_STAT_21164{ struct { ULONG Wr: 1; ULONG Acv: 1; ULONG For: 1; ULONG Fow: 1; ULONG DtbMiss: 1; ULONG BadVa: 1; ULONG Ra: 5; ULONG Opcode: 6; ULONG Raz1: 15; ULONG Raz2: 32; } ; ULONGLONG all; } MM_STAT_21164, *PMM_STAT_21164;
//
// Define the DC_PERR_STAT.
//
typedef union _DC_PERR_STAT_21164{ struct { ULONG Seo: 1; ULONG Lock: 1; ULONG Dp0: 1; ULONG Dp1: 1; ULONG Tp0: 1; ULONG Tp1: 1; ULONG Raz1: 26; ULONG Raz2: 32; } ; ULONGLONG all; } DC_PERR_STAT_21164, *PDC_PERR_STAT_21164;
//
// Define the MCSR.
//
typedef union _MCSR_21164{ struct { ULONG MBigEndian: 1; ULONG Sp32: 1; ULONG Sp43: 1; ULONG DbgTestSel0: 1; ULONG EBigEndian: 1; ULONG DbgTestSel1: 1; ULONG Raz1: 26; ULONG Raz2: 32; } ; ULONGLONG all; } MCSR_21164, *PMCSR_21164;
//
// Define the DC_MODE.
//
typedef union _DC_MODE_21164{ struct { ULONG DcEna: 1; ULONG DcFhit: 1; ULONG DcBadParity: 1; ULONG DcPerrDisable: 1; ULONG DcDoa: 1; ULONG Raz1: 27; ULONG Raz2: 32; } ; ULONGLONG all; } DC_MODE_21164, *PDC_MODE_21164;
//
// Define the MAF_MODE.
//
typedef union _MAF_MODE_21164{ struct { ULONG DreadNomerge: 1; ULONG WbFlushAlways: 1; ULONG WbNomerge: 1; ULONG IoNomerge: 1; ULONG WbCntDisable: 1; ULONG MafArbDisable: 1; ULONG DreadPending: 1; ULONG WbPending: 1; ULONG Raz1: 24; ULONG Raz2: 32; } ; ULONGLONG all; } MAF_MODE_21164, *PMAF_MODE_21164;
//
// Define the ALT_MODE.
//
typedef union _ALT_MODE_21164{ struct { ULONG Ignore1: 3; ULONG Am: 2; ULONG Ignore2: 27; ULONG Ignore3: 32; } ; ULONGLONG all; } ALT_MODE_21164, *PALT_MODE_21164;
//
// Define the CC_CTL.
//
typedef union _CC_CTL_21164{ struct { ULONG Count; ULONG CcEna: 1; ULONG Ignore: 31; } ; ULONGLONG all; } CC_CTL_21164, *PCC_CTL_21164;
//
// Define Cbox Internal Processor Registers.
// (These IPRs are accessed via ld/st rather than mf/mt.)
//
//
// Define physical and superpage addresses for the CBOX registers.
//
#define BASE_SUPERVA (ULONGLONG)(0xfffffc0000000000)
#define SC_CTL_PA (ULONGLONG)(0xfffff000a8)
#define SC_STAT_PA (ULONGLONG)(0xfffff000e8)
#define SC_ADDR_PA (ULONGLONG)(0xfffff00188)
#define BC_CONTROL_PA (ULONGLONG)(0xfffff00128)
#define BC_CONFIG_PA (ULONGLONG)(0xfffff001c8)
#define BC_TAG_ADDR_PA (ULONGLONG)(0xfffff00108)
#define EI_STAT_PA (ULONGLONG)(0xfffff00168)
#define EI_ADDR_PA (ULONGLONG)(0xfffff00148)
#define FILL_SYN_PA (ULONGLONG)(0xfffff00068)
#define LD_LOCK_PA (ULONGLONG)(0xfffff001e8)
#define SC_CTL_SVA (ULONGLONG)( BASE_SUPERVA | SC_CTL_PA )
#define SC_STAT_SVA (ULONGLONG)( BASE_SUPERVA | SC_STAT_PA )
#define SC_ADDR_SVA (ULONGLONG)( BASE_SUPERVA | SC_ADDR_PA )
#define BC_CONTROL_SVA (ULONGLONG)( BASE_SUPERVA | BC_CONTROL_PA )
#define BC_CONFIG_SVA (ULONGLONG)( BASE_SUPERVA | BC_CONFIG_PA )
#define BC_TAG_ADDR_SVA (ULONGLONG)( BASE_SUPERVA | BC_TAG_ADDR_PA )
#define EI_STAT_SVA (ULONGLONG)( BASE_SUPERVA | EI_STAT_PA )
#define EI_ADDR_SVA (ULONGLONG)( BASE_SUPERVA | EI_ADDR_PA )
#define FILL_SYN_SVA (ULONGLONG)( BASE_SUPERVA | FILL_SYN_PA )
#define LD_LOCK_SVA (ULONGLONG)( BASE_SUPERVA | LD_LOCK_PA )
//
// Define the offsets for the Cbox IPRs to be used with specialized
// read/write ipr routines for EV5.
//
typedef struct _CBOX_IPRS_21164{ UCHAR FillSyn; UCHAR Unused1; UCHAR ScCtl; UCHAR Unused2; UCHAR ScStat; UCHAR BcTagAddr; UCHAR BcControl; UCHAR EiAddr; UCHAR EiStat; UCHAR ScAddr; UCHAR Unused3; UCHAR BcConfig; UCHAR LdLock; } CBOX_IPRS_21164, *PCBOX_IPRS_21164;
//
// Define the SC_CTL.
//
typedef union _SC_CTL_21164{ struct { ULONG ScFhit: 1; ULONG ScFlush: 1; ULONG ScTagStat: 6; ULONG ScFbDp: 4; ULONG ScBlkSize: 1; ULONG ScSetEn: 3; ULONG Raz1: 16; ULONG Raz2: 32; } ; ULONGLONG all; } SC_CTL_21164, *PSC_CTL_21164;
//
// Define the SC_ADDR.
//
typedef union _SC_ADDR_21164{ struct { ULONGLONG Rao1: 4; ULONGLONG ScAddr: 35; ULONGLONG Raz1: 1; ULONGLONG Rao2: 24; }; ULONGLONG all; } SC_ADDR_21164, *PSC_ADDR_21164;
//
// Define the SC_STAT.
//
typedef union _SC_STAT_21164{ struct { ULONG ScTperr: 3; ULONG ScDperr: 8; ULONG CboxCmd: 5; ULONG ScScndErr: 1; ULONG Raz1: 15; ULONG Raz2: 32; } ; ULONGLONG all; } SC_STAT_21164, *PSC_STAT_21164;
//
// Define the BC_CONTROL.
//
typedef union _BC_CONTROL_21164{ struct { ULONG BcEnabled: 1; ULONG AllocCyc: 1; ULONG EiCmdGrp1: 1; ULONG EiCmdGrp2: 1; ULONG CorrFillDat: 1; ULONG VtmFirst: 1; ULONG EiEccOrParity: 1; ULONG BcFhit: 1; ULONG BcTagStat: 5; ULONG BcBadDat: 2; ULONG EiDisErr: 1; ULONG TlPipeLatch: 1; ULONG BcWave: 2; ULONG PmMuxSel1: 3; ULONG PmMuxSel2: 3; ULONG Mbz1: 1; ULONG FlushScVtm: 1; ULONG Mbz2: 1; ULONG DisSysPar: 1; ULONG Mbz3: 3; ULONG Raz1: 1; ULONG NoByteIo: 1; ULONG Raz2: 30; } ; ULONGLONG all; } BC_CONTROL_21164, *PBC_CONTROL_21164;
//
// Define the BC_CONFIG.
//
typedef union _BC_CONFIG_21164{ struct { ULONG BcSize: 3; ULONG Reserved1: 1; ULONG BcRdSpd: 4; ULONG BcWrSpd: 4; ULONG BcRdWrSpc: 3; ULONG Reserved2: 1; ULONG FillWeOffset: 3; ULONG Reserved3: 1; ULONG BcWeCtl: 9; ULONG Reserved4: 3; ULONG Reserved5: 32; } ; ULONGLONG all; } BC_CONFIG_21164, *PBC_CONFIG_21164;
//
// Define the EI_STAT.
//
typedef union _EI_STAT_21164{ struct { ULONG Ra01: 24; ULONG ChipId: 4; ULONG BcTperr: 1; ULONG BcTcperr: 1; ULONG EiEs: 1; ULONG CorEccErr: 1; ULONG UncEccErr: 1; ULONG EiParErr: 1; ULONG FilIrd: 1; ULONG SeoHrdErr: 1; ULONG Ra02: 28; } ; ULONGLONG all; } EI_STAT_21164, *PEI_STAT_21164;
//
// Define the EI_ADDR.
//
typedef union _EI_ADDR_21164{ struct { ULONGLONG Rao1: 4; ULONGLONG EiAddr: 36; ULONGLONG Rao2: 24; }; ULONGLONG all; } EI_ADDR_21164, *PEI_ADDR_21164;
//
// Define the BC_TAG_ADDR.
//
typedef union _BC_TAG_ADDR_21164{ struct { ULONG Ra01: 12; ULONG Hit: 1; ULONG TagCtlP: 1; ULONG TagCtlD: 1; ULONG TagCtlS: 1; ULONG TagCtlV: 1; ULONG TagP: 1; ULONG Ra02: 2; ULONG Tag0: 12; ULONG Tag1: 7; ULONG Ra03: 25; } ; ULONGLONG all; } BC_TAG_ADDR_21164, *PBC_TAG_ADDR_21164;
//
// Define the FILL_SYN.
//
typedef union _FILL_SYN_21164{ struct { ULONG Lo: 8; ULONG Hi: 8; ULONG Raz1: 16; ULONG Raz2: 32; } ; ULONGLONG all; } FILL_SYN_21164, *PFILL_SYN_21164;
//++
// 21164PC Definitions
//--
//
// CBOX Register addresses
//
#define CBOX_CONFIG_PA (ULONGLONG)(0xfffff00008)
#define CBOX_ADDRESS_PA (ULONGLONG)(0xfffff00088)
#define CBOX_STATUS_PA (ULONGLONG)(0xfffff00108)
#define CBOX_CONFIG2_PA (ULONGLONG)(0xfffff00188)
#define CBOX_CONFIG_SVA (ULONGLONG)( BASE_SUPERVA | CBOX_CONFIG_PA )
#define CBOX_ADDRESS_SVA (ULONGLONG)( BASE_SUPERVA | CBOX_ADDRESS_PA )
#define CBOX_STATUS_SVA (ULONGLONG)( BASE_SUPERVA | CBOX_STATUS_PA )
#define CBOX_CONFIG2_SVA (ULONGLONG)( BASE_SUPERVA | CBOX_CONFIG2_PA )
//
// Define the offsets for the Cbox IPRs to be used with specialized
// read/write ipr routines for PCA56.
//
typedef struct _CBOX_IPRS_21164PC{ UCHAR CboxConfig; UCHAR CboxAddress; UCHAR CboxStatus; UCHAR CboxConfig2; } CBOX_IPRS_21164PC, *PCBOX_IPRS_21164PC;
//
// Define CBOX_CONFIG
//
typedef union _CBOX_CONFIG_21164PC{ struct { ULONG Mbz1: 4; ULONG BcClkRatio: 4; ULONG BcLatencyOff: 4; ULONG BcSize: 2; ULONG BcClkDelay: 2; ULONG BcRwOff: 3; ULONG BcProbeDuringFill: 1; ULONG BcFillDelay: 3; ULONG IoParityEnable: 1; ULONG MemParityEnable: 1; ULONG BcForceHit: 1; ULONG BcForceErr: 1; ULONG BcBigDrv: 1; ULONG BcTagData: 3; ULONG BcEnable: 1; ULONG Mbz2: 32; }; ULONGLONG all; } CBOX_CONFIG_21164PC, *PCBOX_CONFIG_21164PC;
//
// Define CBOX_ADDRESS
//
typedef union _CBOX_ADDRESS_21164PC{ struct { ULONGLONG Mbz1: 4; ULONGLONG Address36_4: 33; ULONGLONG Mbz2: 2; ULONGLONG Address39: 1; ULONGLONG Mbz3: 24; }; ULONGLONG all; } CBOX_ADDRESS_21164PC, *PCBOX_ADDRESS_21164PC;
//
// Define CBOX_STATUS
//
typedef union _CBOX_STATUS_21164PC{ struct { ULONGLONG Mbz1: 4; ULONGLONG SysClkRatio: 4; ULONGLONG ChipRev: 4; ULONGLONG DataParErr: 4; ULONGLONG TagParErr: 1; ULONGLONG TagDirty: 1; ULONGLONG Memory: 1; ULONGLONG MultiErr: 1; ULONGLONG Mbz2: 44; }; ULONGLONG all; } CBOX_STATUS_21164PC, *PCBOX_STATUS_21164PC;
//
// Define CBOX_CONFIG2
//
typedef union _CBOX_CONFIG2_21164PC{ struct { ULONGLONG Mbz1: 4; ULONGLONG BcRegReg: 1; ULONGLONG DbgSel: 1; ULONGLONG BcThreeMiss: 1; ULONGLONG Mbz2: 1; ULONGLONG Pm0Mux: 3; ULONGLONG Pm1Mux: 3; ULONGLONG Mbz3: 50; }; ULONGLONG all; } CBOX_CONFIG2_21164PC, *PCBOX_CONFIG2_21164PC;
//++
// End of 21164PC definitions
//--
//
// Define EV5 IPLs (interrupt priority levels.
//
#define EV5_IPL0 (0)
#define EV5_IPL1 (1)
#define EV5_IPL2 (2)
#define EV5_IPL3 (3)
#define EV5_IPL4 (4)
#define EV5_IPL5 (5)
#define EV5_IPL6 (6)
#define EV5_IPL7 (7)
#define EV5_IPL8 (8)
#define EV5_IPL9 (9)
#define EV5_IPL10 (10)
#define EV5_IPL11 (11)
#define EV5_IPL12 (12)
#define EV5_IPL13 (13)
#define EV5_IPL14 (14)
#define EV5_IPL15 (15)
#define EV5_IPL16 (16)
#define EV5_IPL17 (17)
#define EV5_IPL18 (18)
#define EV5_IPL19 (19)
#define EV5_IPL20 (20)
#define EV5_IPL21 (21)
#define EV5_IPL22 (22)
#define EV5_IPL23 (23)
#define EV5_IPL24 (24)
#define EV5_IPL25 (25)
#define EV5_IPL26 (26)
#define EV5_IPL27 (27)
#define EV5_IPL28 (28)
#define EV5_IPL29 (29)
#define EV5_IPL30 (30)
#define EV5_IPL31 (31)
//
// Define interrupt vector values for EV5.
//
#define EV5_IPL20_VECTOR (20)
#define EV5_IPL21_VECTOR (21)
#define EV5_IPL22_VECTOR (22)
#define EV5_IPL23_VECTOR (23)
#define EV5_IRQ0_VECTOR EV5_IPL20_VECTOR
#define EV5_IRQ1_VECTOR EV5_IPL21_VECTOR
#define EV5_IRQ2_VECTOR EV5_IPL22_VECTOR
#define EV5_IRQ3_VECTOR EV5_IPL23_VECTOR
#define EV5_HALT_VECTOR (14)
#define EV5_PFL_VECTOR (24)
#define EV5_MCHK_VECTOR (12)
#define EV5_CRD_VECTOR (25)
#define EV5_PC0_VECTOR (6)
#define EV5_PC1_VECTOR (8)
#define EV5_PC2_VECTOR (15)
//
// Define the Interrupt Mask structure communicated between the
// HAL and PALcode.
//
typedef union _IMSK_21164{ struct{ ULONG Irq0Mask: 1; ULONG Irq1Mask: 1; ULONG Irq2Mask: 1; ULONG Irq3Mask: 1; ULONG Reserved: 28; }; ULONG all; } IMSK_21164, *PIMSK_21164;
//
// PALcode Event Counters for the 21164
// This is the structure of the data returned by the rdcounters call pal.
//
typedef struct _COUNTERS_21164{ ULONGLONG MachineCheckCount; ULONGLONG ArithmeticExceptionCount; ULONGLONG InterruptCount; ULONGLONG ItbMissCount; ULONGLONG DtbMissSingleCount; ULONGLONG DtbMissDoubleCount; ULONGLONG IAccvioCount; ULONGLONG DfaultCount; ULONGLONG UnalignedCount; ULONGLONG OpcdecCount; ULONGLONG FenCount; ULONGLONG ItbTnvCount; ULONGLONG DtbTnvCount; ULONGLONG PdeTnvCount; ULONGLONG HardwareInterruptCount; ULONGLONG SoftwareInterruptCount; ULONGLONG SpecialInterruptCount; ULONGLONG HaltCount; ULONGLONG RestartCount; ULONGLONG DrainaCount; ULONGLONG RebootCount; ULONGLONG InitpalCount; ULONGLONG WrentryCount; ULONGLONG SwpirqlCount; ULONGLONG RdirqlCount; ULONGLONG DiCount; ULONGLONG EiCount; ULONGLONG SwppalCount; ULONGLONG SsirCount; ULONGLONG CsirCount; ULONGLONG RfeCount; ULONGLONG RetsysCount; ULONGLONG SwpctxCount; ULONGLONG SwpprocessCount; ULONGLONG RdmcesCount; ULONGLONG WrmcesCount; ULONGLONG TbiaCount; ULONGLONG TbisCount; ULONGLONG TbisasnCount; ULONGLONG DtbisCount; ULONGLONG RdkspCount; ULONGLONG SwpkspCount; ULONGLONG RdpsrCount; ULONGLONG RdpcrCount; ULONGLONG RdthreadCount; ULONGLONG TbimCount; ULONGLONG TbimasnCount; ULONGLONG RdcountersCount; ULONGLONG RdstateCount; ULONGLONG WrperfmonCount; ULONGLONG InitpcrCount; ULONGLONG BptCount; ULONGLONG CallsysCount; ULONGLONG ImbCount; ULONGLONG GentrapCount; ULONGLONG RdtebCount; ULONGLONG KbptCount; ULONGLONG CallkdCount; ULONGLONG AddressSpaceSwapCount; ULONGLONG AsnWrapCount; ULONGLONG Misc1Count; ULONGLONG Misc2Count; ULONGLONG Misc3Count; ULONGLONG Misc4Count; ULONGLONG Misc5Count; ULONGLONG Misc6Count; ULONGLONG Misc7Count; ULONGLONG Misc8Count; ULONGLONG Misc9Count; ULONGLONG Misc10Count; ULONGLONG Misc11Count; ULONGLONG Misc12Count; ULONGLONG Misc13Count; ULONGLONG Misc14Count; ULONGLONG Misc15Count; ULONGLONG Misc16Count; ULONGLONG Misc17Count; ULONGLONG Misc18Count; ULONGLONG Misc19Count; ULONGLONG Misc20Count; ULONGLONG SleepCount; ULONGLONG EalnfixCount; ULONGLONG DalnfixCount; } COUNTERS_21164, *PCOUNTERS_21164;
//
// Types of performance counters.
//
typedef enum _AXP21164_PCCOUNTER{ Ev5PerformanceCounter0 = 0, Ev5PerformanceCounter1 = 1, Ev5PerformanceCounter2 = 2 } AXP21164_PCCOUNTER, *PAXP21164_PCCOUNTER;
//
// Mux control values
//
typedef enum _AXP21164_PCMUXCONTROL{ Ev5Cycles = 0x0, Ev5Instructions = 0x1, Ev5NonIssue = 0x0, Ev5SplitIssue = 0x1, Ev5PipeDry = 0x2, Ev5ReplayTrap = 0x3, Ev5SingleIssue = 0x4, Ev5DualIssue = 0x5, Ev5TripleIssue = 0x6, Ev5QuadIssue = 0x7, Ev5FlowChangeInst = 0x8, Ev5IntOpsIssued = 0x9, Ev5FPOpsIssued = 0xa, Ev5LoadsIssued = 0xb, Ev5StoresIssued = 0xc, Ev5IcacheIssued = 0xd, Ev5DcacheAccesses = 0xe, Ev5CBOXInput1 = 0xf, Ev5LongStalls = 0x0, Ev5PCMispredicts = 0x2, Ev5BRMispredicts = 0x3, Ev5IcacheRFBMisses = 0x4, Ev5ITBMisses = 0x5, Ev5DcacheLDMisses = 0x6, Ev5DTBMisses = 0x7, Ev5LDMergedMAF = 0x8, Ev5LDUReplayTraps = 0x9, Ev5WBMAFReplayTraps = 0xa, Ev5ExternPerfmonhInput = 0xb, Ev5CPUCycles = 0xc, Ev5MBStallCycles = 0xd, Ev5LDxLInstIssued = 0xe, Ev5CBOXInput2 = 0xf,
//
// Special MUX controls
//
Ev5PcSpecial = 0x10,
Ev5JsrRetIssued = 0x10, Ev5CondBrIssued = 0x11, Ev5AllFlowIssued = 0x12,
Ev5ScMux1 = 0x20, Ev5ScAccesses = 0x20, Ev5ScReads = 0x21, Ev5ScWrites = 0x22, Ev5ScVictims = 0x23, Ev5ScUndefined = 0x24, Ev5ScBcacheAccesses = 0x25, Ev5ScBcacheVictims = 0x26, Ev5ScSystemCmdReq = 0x27, Ev5ScMux2 = 0x28, Ev5ScMisses = 0x28, Ev5ScReadMisses = 0x29, Ev5ScWriteMisses = 0x2a, Ev5ScSharedWrites = 0x2b, Ev5ScWrites2 = 0x2c, Ev5ScBcacheMisses = 0x2d, Ev5ScSysInvalidate = 0x2e, Ev5ScSysReadReq = 0x2f,
} AXP21164_PCMUXCONTROL, *PAXP21164_PCMUXCONTROL;
//
// Counter control values.
//
typedef enum _AXP21164_PCEVENTCOUNT{ Ev5CountEvents2xx8 = 0x100, Ev5CountEvents2xx14 = 0x4000, Ev5CountEvents2xx16 = 0x10000 } AXP21164_PCEVENTCOUNT, *PAXP21164_PCEVENTCOUNT;
//
// Event count selection values
//
typedef enum _COUNTER_CONTROL{ Ev5CounterDisable = 0x0, Ev5InterruptDisable = 0x1, Ev5EventCountLow=0x2, Ev5EventCountHigh=0x3 } COUNTER_CONTROL, *PCOUNTER_CONTROL;
//
// Internal processor state record.
// This is the structure of the data returned by the rdstate call pal.
//
typedef struct _PROCESSOR_STATE_21164{ ITB_PTE_TEMP_21164 ItbPte[ ITB_ENTRIES_21164 ]; ITB_ASN_21164 ItbAsn; ULONGLONG Ivptbr; ICPERR_STAT_21164 IcPerrStat; EXC_SUM_21164 ExcSum; ULONGLONG ExcMask; ULONGLONG PalBase; PS_21164 Ps; ICSR_21164 Icsr; ULONGLONG Ipl; ULONGLONG IntId; ULONGLONG Astrr; ULONGLONG Aster; SIRR_21164 Sirr; ISR_21164 Isr; PMCTR_21164 Pmctr; ULONGLONG PalTemp[ PAL_TEMPS_21164 ]; DTB_PTE_TEMP_21164 DtbPte[ DTB_ENTRIES_21164 ]; MM_STAT_21164 MmStat; ULONGLONG Va; DC_PERR_STAT_21164 DcPerrStat; MCSR_21164 Mcsr; DC_MODE_21164 DcMode; MAF_MODE_21164 MafMode; union { struct { // EV5
SC_CTL_21164 ScCtl; SC_ADDR_21164 ScAddr; SC_STAT_21164 ScStat; BC_CONTROL_21164 BcControl; BC_CONFIG_21164 BcConfig; EI_STAT_21164 EiStat; EI_ADDR_21164 EiAddr; BC_TAG_ADDR_21164 BcTagAddr; FILL_SYN_21164 FillSyn; }; struct { // PCA56
CBOX_CONFIG_21164PC CboxConfig; CBOX_ADDRESS_21164PC CboxAddress; CBOX_STATUS_21164PC CboxStatus; CBOX_CONFIG2_21164PC CboxConfig2; ULONGLONG Reserved1; ULONGLONG Reserved2; ULONGLONG Reserved3; ULONGLONG Reserved4; ULONGLONG Reserved5; }; }; } PROCESSOR_STATE_21164, *PPROCESSOR_STATE_21164;
//
// Machine-check logout frame.
//
typedef struct _LOGOUT_FRAME_21164{ ULONGLONG ExcAddr; ULONGLONG PalBase; ULONGLONG Ps; ULONGLONG Va; ULONGLONG VaForm; ICSR_21164 Icsr; ICPERR_STAT_21164 IcPerrStat; ISR_21164 Isr; ULONGLONG Ipl; ULONGLONG IntId; MM_STAT_21164 MmStat; MCSR_21164 Mcsr; DC_PERR_STAT_21164 DcPerrStat; union { struct { // EV5
SC_CTL_21164 ScCtl; SC_STAT_21164 ScStat; SC_ADDR_21164 ScAddr; BC_CONTROL_21164 BcControl; BC_CONFIG_21164 BcConfig; BC_TAG_ADDR_21164 BcTagAddr; EI_STAT_21164 EiStat; EI_ADDR_21164 EiAddr; FILL_SYN_21164 FillSyn; }; struct { // PCA56
CBOX_CONFIG_21164PC CboxConfig; CBOX_ADDRESS_21164PC CboxAddress; CBOX_STATUS_21164PC CboxStatus; CBOX_CONFIG2_21164PC CboxConfig2; ULONGLONG Reserved1; ULONGLONG Reserved2; ULONGLONG Reserved3; ULONGLONG Reserved4; ULONGLONG Reserved5; }; }; ULONGLONG PalTemp[ PAL_TEMPS_21164 ]; } LOGOUT_FRAME_21164, *PLOGOUT_FRAME_21164;
//
// Correctable Machine-check logout frame.
//
typedef struct _CORRECTABLE_FRAME_21164{ union { struct { // EV5
EI_STAT_21164 EiStat; EI_ADDR_21164 EiAddr; FILL_SYN_21164 FillSyn; }; struct { // PCA56
CBOX_STATUS_21164PC CboxStatus; CBOX_ADDRESS_21164PC CboxAddress; ULONGLONG Reserved; }; }; ISR_21164 Isr; } CORRECTABLE_FRAME_21164;
//
// Define the number of physical and virtual address bits
//
#define EV5_PHYSICAL_ADDRESS_BITS 40
#define EV5_VIRTUAL_ADDRESS_BITS 43
#endif //!_AXP21164_
|