From e611b132f9b8abe35b362e5870b74bce94a1e58e Mon Sep 17 00:00:00 2001 From: Adam Date: Sat, 16 May 2020 20:51:50 -0700 Subject: initial commit --- private/ntos/nthals/halgamma/alpha/gamma.h | 553 +++++++++++++++++++++++++++++ 1 file changed, 553 insertions(+) create mode 100644 private/ntos/nthals/halgamma/alpha/gamma.h (limited to 'private/ntos/nthals/halgamma/alpha/gamma.h') diff --git a/private/ntos/nthals/halgamma/alpha/gamma.h b/private/ntos/nthals/halgamma/alpha/gamma.h new file mode 100644 index 000000000..ffb3c9d14 --- /dev/null +++ b/private/ntos/nthals/halgamma/alpha/gamma.h @@ -0,0 +1,553 @@ +/*++ + +Copyright (c) 1993 Digital Equipment Corporation + +Module Name: + + gamma.h + +Abstract: + + This file defines the structures and definitions common to all + sable-based platforms. + +Author: + + Joe Notarangelo 26-Oct-1993 + Steve Jenness 26-Oct-1993 + +Environment: + + Kernel mode + +Revision History: + + 28-Dec 1994 Steve Brooks + t2.h and rattler.h extracted from this file. + +--*/ + +#ifndef _GAMMAH_ +#define _GAMMAH_ + +#include "sableref.h" // Sable reference IO structure +#include "lynxref.h" // Lynx interrupt structure +#include "xioref.h" // XIO interrupt structure +#if !defined(_LANGUAGE_ASSEMBLY) +#include "errframe.h" +#endif + + +// +// Constants used by dense space I/O routines +// + +#define GAMMA_PCI0_DENSE_BASE_PHYSICAL_SUPERPAGE 0xfffffc83c0000000 +#define GAMMA_PCI1_DENSE_BASE_PHYSICAL_SUPERPAGE 0xfffffc8180000000 + +#define PCI0_DENSE_BASE_PHYSICAL_SUPERPAGE \ + (GAMMA_PCI0_DENSE_BASE_PHYSICAL_SUPERPAGE - SABLE_PCI0_DENSE_MEMORY_QVA) + +#define PCI1_DENSE_BASE_PHYSICAL_SUPERPAGE \ + (GAMMA_PCI1_DENSE_BASE_PHYSICAL_SUPERPAGE - SABLE_PCI1_DENSE_MEMORY_QVA) + + +#if !defined(_LANGUAGE_ASSEMBLY) + +#include "rattler.h" // Rattler chipset definitions +#include "t2.h" // T2 chipset definitions +#include "icic.h" // ICIC definitions + +#define GAMMA_QVA_PHYSICAL_BASE ((ULONGLONG)0x8000000000) + +// +// QVA +// HAL_MAKE_QVA( +// ULONGLONG PhysicalAddress +// ) +// +// Routine Description: +// +// This macro returns the Qva for a physical address in system space. +// +// Arguments: +// +// PhysicalAddress - Supplies a 64-bit physical address. +// +// Return Value: +// +// The Qva associated with the physical address. +// + +#define HAL_MAKE_QVA(PA) \ + ( (PVOID)( QVA_ENABLE | \ + (ULONG)( ((PA)-GAMMA_QVA_PHYSICAL_BASE) >> IO_BIT_SHIFT) ) ) + + +// +// Define physical address spaces for GAMMA. +// +// PCI0 - 32bit PCI bus +// PCI1 - 64bit PCI bus +// + +#define GAMMA_PCI1_DENSE_MEMORY_PHYSICAL ((ULONGLONG)0x8180000000) +#define GAMMA_PCI1_SPARSE_IO_PHYSICAL ((ULONGLONG)0x81C0000000) +#define GAMMA_PCI0_SPARSE_MEMORY_PHYSICAL ((ULONGLONG)0x8200000000) +#define GAMMA_PCI1_SPARSE_MEMORY_PHYSICAL ((ULONGLONG)0x8300000000) + +#define GAMMA_PCI1_SPARSE_ISA_LEGACY_MEMORY_PHYSICAL ((ULONGLONG)0x8302000000) +#define GAMMA_PCI1_SPARSE_ISA_LEGACY_IO_PHYSICAL ((ULONGLONG)0x8200000000) + +#define GAMMA_CBUS_CSRS_PHYSICAL ((ULONGLONG)0x8380000000) +#define GAMMA_CPU0_CSRS_PHYSICAL ((ULONGLONG)0x8380000000) +#define GAMMA_CPU1_CSRS_PHYSICAL ((ULONGLONG)0x8381000000) +#define GAMMA_CPU2_CSRS_PHYSICAL ((ULONGLONG)0x8382000000) +#define GAMMA_CPU3_CSRS_PHYSICAL ((ULONGLONG)0x8383000000) +#define GAMMA_CPU0_SICR_PHYSICAL ((ULONGLONG)0x8380000320) +#define GAMMA_CPU1_SICR_PHYSICAL ((ULONGLONG)0x8381000320) +#define GAMMA_CPU2_SICR_PHYSICAL ((ULONGLONG)0x8382000320) +#define GAMMA_CPU3_SICR_PHYSICAL ((ULONGLONG)0x8383000320) +#define GAMMA_MEM0_CSRS_PHYSICAL ((ULONGLONG)0x8388000000) +#define GAMMA_MEM1_CSRS_PHYSICAL ((ULONGLONG)0x8389000000) +#define GAMMA_MEM2_CSRS_PHYSICAL ((ULONGLONG)0x838A000000) +#define GAMMA_MEM3_CSRS_PHYSICAL ((ULONGLONG)0x838B000000) +#define GAMMA_T2_CSRS_PHYSICAL ((ULONGLONG)0x838E000000) +#define GAMMA_T4_CSRS_PHYSICAL ((ULONGLONG)0x838F000000) + +#define T2_CSRS_QVA (HAL_MAKE_QVA(GAMMA_T2_CSRS_PHYSICAL)) +#define T4_CSRS_QVA (HAL_MAKE_QVA(GAMMA_T4_CSRS_PHYSICAL)) + + +#define GAMMA_PCI0_CONFIGURATION_PHYSICAL ((ULONGLONG)0x8390000000) +#define GAMMA_PCI1_CONFIGURATION_PHYSICAL ((ULONGLONG)0x8398000000) +#define GAMMA_PCI0_SPARSE_IO_PHYSICAL ((ULONGLONG)0x83A0000000) +#define GAMMA_PCI0_DENSE_MEMORY_PHYSICAL ((ULONGLONG)0x83C0000000) + +// +// Define the limits of User mode Sparse and dense space: +// A special hack is applied to these values for Gamma, since these addresses +// are 40 bits in length, and are therefore beyond the range of QVAs. Bit 36 +// is set in these constants, which will get shifted to bit 31 when a QVA is +// formed. When the physical address is then generated by the access macros, +// the high order bits will get set, forcing bit 39 to be set, causing a +// noncached access to occur +// +#define GAMMA_USER_PCI1_DENSE_MEMORY_PHYSICAL ((ULONGLONG)0x8980000000) +#define GAMMA_USER_PCI1_SPARSE_IO_PHYSICAL ((ULONGLONG)0x89c0000000) +#define GAMMA_USER_PCI0_SPARSE_MEMORY_PHYSICAL ((ULONGLONG)0x8A00000000) +#define GAMMA_USER_PCI0_SPARSE_MEMORY_END_PHYSICAL ((ULONGLONG)0x8b00000000) +#define GAMMA_USER_PCI1_SPARSE_MEMORY_PHYSICAL ((ULONGLONG)0x8b00000000) +#define GAMMA_USER_PCI1_SPARSE_MEMORY_END_PHYSICAL ((ULONGLONG)0x8b80000000) +#define GAMMA_USER_PCI0_SPARSE_IO_PHYSICAL ((ULONGLONG)0x8ba0000000) +#define GAMMA_USER_PCI0_SPARSE_IO_END_PHYSICAL ((ULONGLONG)0x8bc0000000) +#define GAMMA_USER_PCI0_DENSE_MEMORY_PHYSICAL ((ULONGLONG)0x8bc0000000) + +#define GAMMA_EDGE_LEVEL_CSRS_PHYSICAL ((ULONGLONG)0x83A00004C0) +#define GAMMA_INTERRUPT_CSRS_PHYSICAL ((ULONGLONG)0x83A000A640) +#define XIO_INTERRUPT_CSRS_PHYSICAL ((ULONGLONG)0x81C000A640) + +// +// For compatability, define the SABLE_* constants to refer to the GAMMA_* +// constants. This allows gamma to share sources from the sable tree. +// + +#define SABLE_PCI1_DENSE_MEMORY_PHYSICAL GAMMA_PCI1_DENSE_MEMORY_PHYSICAL +#define SABLE_PCI1_SPARSE_IO_PHYSICAL GAMMA_PCI1_SPARSE_IO_PHYSICAL +#define SABLE_PCI0_SPARSE_MEMORY_PHYSICAL GAMMA_PCI0_SPARSE_MEMORY_PHYSICAL +#define SABLE_PCI1_SPARSE_MEMORY_PHYSICAL GAMMA_PCI1_SPARSE_MEMORY_PHYSICAL + +#define SABLE_USER_PCI1_DENSE_MEMORY_PHYSICAL GAMMA_USER_PCI1_DENSE_MEMORY_PHYSICAL +#define SABLE_USER_PCI1_SPARSE_IO_PHYSICAL GAMMA_USER_PCI1_SPARSE_IO_PHYSICAL +#define SABLE_USER_PCI0_SPARSE_MEMORY_PHYSICAL GAMMA_USER_PCI0_SPARSE_MEMORY_PHYSICAL +#define SABLE_USER_PCI0_SPARSE_MEMORY_END_PHYSICAL GAMMA_USER_PCI0_SPARSE_MEMORY_END_PHYSICAL +#define SABLE_USER_PCI1_SPARSE_MEMORY_PHYSICAL GAMMA_USER_PCI1_SPARSE_MEMORY_PHYSICAL +#define SABLE_USER_PCI1_SPARSE_MEMORY_END_PHYSICAL GAMMA_USER_PCI1_SPARSE_MEMORY_END_PHYSICAL +#define SABLE_USER_PCI0_SPARSE_IO_PHYSICAL GAMMA_USER_PCI0_SPARSE_IO_PHYSICAL +#define SABLE_USER_PCI0_SPARSE_IO_END_PHYSICAL GAMMA_USER_PCI0_SPARSE_IO_END_PHYSICAL +#define SABLE_USER_PCI0_DENSE_MEMORY_PHYSICAL GAMMA_USER_PCI0_DENSE_MEMORY_PHYSICAL + +#define SABLE_CBUS_CSRS_PHYSICAL GAMMA_CBUS_CSRS_PHYSICAL +#define SABLE_CPU0_CSRS_PHYSICAL GAMMA_CPU0_CSRS_PHYSICAL +#define SABLE_CPU1_CSRS_PHYSICAL GAMMA_CPU1_CSRS_PHYSICAL +#define SABLE_CPU2_CSRS_PHYSICAL GAMMA_CPU2_CSRS_PHYSICAL +#define SABLE_CPU3_CSRS_PHYSICAL GAMMA_CPU3_CSRS_PHYSICAL +#define SABLE_CPU0_IPIR_PHYSICAL GAMMA_CPU0_SICR_PHYSICAL +#define SABLE_CPU1_IPIR_PHYSICAL GAMMA_CPU1_SICR_PHYSICAL +#define SABLE_CPU2_IPIR_PHYSICAL GAMMA_CPU2_SICR_PHYSICAL +#define SABLE_CPU3_IPIR_PHYSICAL GAMMA_CPU3_SICR_PHYSICAL + +#define SABLE_PCI0_CONFIGURATION_PHYSICAL GAMMA_PCI0_CONFIGURATION_PHYSICAL +#define SABLE_PCI1_CONFIGURATION_PHYSICAL GAMMA_PCI1_CONFIGURATION_PHYSICAL +#define SABLE_PCI0_SPARSE_IO_PHYSICAL GAMMA_PCI0_SPARSE_IO_PHYSICAL +#define SABLE_PCI0_DENSE_MEMORY_PHYSICAL GAMMA_PCI0_DENSE_MEMORY_PHYSICAL + +// +// Define Interrupt Controller CSRs. +// + +#define SABLE_EDGE_LEVEL_CSRS_QVA (HAL_MAKE_QVA(GAMMA_EDGE_LEVEL_CSRS_PHYSICAL)) +#define SABLE_INTERRUPT_CSRS_QVA (HAL_MAKE_QVA(GAMMA_INTERRUPT_CSRS_PHYSICAL)) + +// +// Define XIO interrupt controller CSRs. +// + +#define XIO_INTERRUPT_CSRS_QVA (HAL_MAKE_QVA(XIO_INTERRUPT_CSRS_PHYSICAL)) + +#define SABLE_PCI_CONFIG_BASE_QVA (HAL_MAKE_QVA(GAMMA_PCI0_CONFIGURATION_PHYSICAL)) + +// +// Gamma uses the Rattler chipset for the CBUS bridge. Define the Sable +// CPU CSRS to be Rattler CPU Csrs. +// +#define SABLE_CPU_CSRS RATTLER_CPU_CSRS +#define PSABLE_CPU_CSRS PRATTLER_CPU_CSRS + + +// +// Define CPU CSRs and masks. +// + +#define SABLE_CPU0_CSRS_QVA (HAL_MAKE_QVA(GAMMA_CPU0_CSRS_PHYSICAL)) +#define SABLE_CPU1_CSRS_QVA (HAL_MAKE_QVA(GAMMA_CPU1_CSRS_PHYSICAL)) +#define SABLE_CPU2_CSRS_QVA (HAL_MAKE_QVA(GAMMA_CPU2_CSRS_PHYSICAL)) +#define SABLE_CPU3_CSRS_QVA (HAL_MAKE_QVA(GAMMA_CPU3_CSRS_PHYSICAL)) +#define GAMMA_MEM0_CSRS_QVA (HAL_MAKE_QVA(GAMMA_MEM0_CSRS_PHYSICAL)) +#define GAMMA_MEM1_CSRS_QVA (HAL_MAKE_QVA(GAMMA_MEM1_CSRS_PHYSICAL)) +#define GAMMA_MEM2_CSRS_QVA (HAL_MAKE_QVA(GAMMA_MEM2_CSRS_PHYSICAL)) +#define GAMMA_MEM3_CSRS_QVA (HAL_MAKE_QVA(GAMMA_MEM3_CSRS_PHYSICAL)) + +#define GAMMA_PRIMARY_PROCESSOR ((ULONG)0x0) +#define GAMMA_SECONDARY_PROCESSOR ((ULONG)0x1) +#define GAMMA_MAXIMUM_PROCESSOR ((ULONG)0x3) +#define HAL_PRIMARY_PROCESSOR (GAMMA_PRIMARY_PROCESSOR) +#define HAL_MAXIMUM_PROCESSOR (GAMMA_MAXIMUM_PROCESSOR) + +// +// Define the default processor frequency to be used before the actual +// frequency can be determined. +// + +#define DEFAULT_PROCESSOR_FREQUENCY_MHZ (275) + +enum { + NoError, + UncorrectableError, + CorrectableError +} ErrorType; + +// +// Define the memory module CSRs (from chapter 10 of the GAMMA CPU spec) +// + +// +// Error Summary register +// + +typedef struct _GAMMA_ESREG_CSR1 { + union { + ULONG EVBCorrecectableError0: 3; // 0-2 + ULONG Resrved1: 1; // 3 + ULONG EVBFatalError0: 4; // 4-7 + ULONG DTError0: 2; // 8-9 + ULONG DTSummary0: 1; // 10 + ULONG Reserved2: 1; // 11 + ULONG IBParError0: 1; // 12 + ULONG IBErrorInfo0: 2; // 13-14 + ULONG IBSummary0: 1; // 15 + ULONG CBError0: 8; // 16-23 + ULONG CBSummary0: 1; // 24 + ULONG CBCommand0: 1; // 25 + ULONG Reserved3: 2; // 26-27 + ULONG EVNoResponse0: 1; // 28 + ULONG Reserved4: 3; // 29-31 + + ULONG EVBCorrecectableError1: 3; // 32-34 + ULONG Resrved5: 1; // 35 + ULONG EVBFatalError1: 4; // 36-39 + ULONG DTError1: 2; // 40-41 + ULONG DTSummary1: 1; // 42 + ULONG Reserved6: 1; // 43 + ULONG IBParError1: 1; // 44 + ULONG IBErrorInfo1: 2; // 45-46 + ULONG IBSummary1: 1; // 47 + ULONG CBError1: 4; // 48-51 + ULONG Reserved7: 4; // 52-55 + ULONG CBSummary1: 1; // 56 + ULONG CBCommand1: 1; // 57 + ULONG Reserved8: 2; // 58-59 + ULONG EVNoResponse1: 1; // 60 + ULONG Reserved9: 3; // 61-63 + }; + ULONGLONG all; + +} GAMMA_ESREG_CSR1, *PGAMMA_ESREG_CSR1; + +typedef struct _GAMMA_EVBCR_CSR2 { + union { + ULONG EnableAddressCommandBusParityCheck0: 1; // 0 + ULONG Reserved1: 3; // 1-3 + ULONG EnableCorrectionErrorInterrupt0: 1; // 4 + ULONG EnableECCCorrection0: 1; // 5 + ULONG EnableRattlerECCCheck0: 1; // 6 + ULONG Reserved2: 20; // 7-26 + ULONG ForceFilledShared: 1; // 27 + ULONG RmmStxcFillShared: 1; // 28 + ULONG Reserved3: 3; // 29-31 + ULONG EnableAddressCommandBusParityCheck1: 1; // 32 + ULONG Reserved4: 4; // 33-35 + ULONG EnableCorrectionErrorInterrupt1: 1; // 36 + ULONG EnableECCCorrection1: 1; // 37 + ULONG EnableRattlerECCCheck1: 1; // 38 + ULONG DisableEV5ECCChecking1: 1; // 39 + ULONG Reserved5: 24; // 40-63 + }; + ULONGLONG all; + +} GAMMA_EVBCR_CSR2, *PGAMMA_EVBCR_CSR2; + + +typedef struct _GAMMA_EVBVEAR_CSR3 { + union { + ULONG EVBVictimErrorAddress0: 30; // 0-29 + ULONG Reserved1: 2; // 30-31 + ULONG EVBVictimErrorAddress1: 30; // 32-61 + ULONG Reserved2: 2; // 62-63 + }; + +} GAMMA_EVBVEAR_CSR3, *PGAMMA_EVBVEAR_CSR3; + +typedef struct _GAMMA_EVBCER_CSR4 { + union { + ULONG CorrectableError0: 2; // 0-1 + ULONG ReadDirty0: 1; // 2 + ULONG MissedCorrectable0: 1; // 3 + ULONG Reserved1: 4; // 4-7 + ULONG ECCSyndrome0: 8; // 8-15 + ULONG ECCSyndrome2: 8; // 16-23 + ULONG Reserved2: 8; // 24-31 + + ULONG CorrectableError1: 2; // 32-33 + ULONG ReadDirty1: 1; // 34 + ULONG MissedCorrectable1: 1; // 35 + ULONG Reserved3: 4; // 36-39 + ULONG ECCSyndrome1: 8; // 40-47 + ULONG ECCSyndrome3: 8; // 48-55 + ULONG Reserved4: 8; // 56-63 + }; + ULONGLONG all; + +} GAMMA_EVBCER_CSR4, *PGAMMA_EVBCER_CSR4; + +typedef struct _GAMMA_EVBCEAR_CSR5 { + union { + ULONG EVBCorrectableErrorAddress0: 32; // 0-31 + ULONG EVBCorrectableErrorAddress1: 32; // 32-63 + }; + ULONGLONG all; + +} GAMMA_EVBCEAR_CSR5, *PGAMMA_EVBCEAR_CSR5; + +typedef struct _GAMMA_EVBUER_CSR6 { + union { + ULONG UncorrectableError0: 2; // 0-1 + ULONG ReadDirty0: 1; // 2 + ULONG Reserved1: 1; // 3 + ULONG ParityErrorOnAddressCommand0: 1; // 4 + ULONG ParityErrorOnVictim0: 1; // 5 + ULONG Reserved2: 2; // 6-7 + ULONG ECCSyndrome0: 8; // 8-15 + ULONG ECCSyndrome2: 8; // 16-23 + ULONG Reserved3: 4; // 24-27 + ULONG EVBCommand0: 4; // 28-31 + + ULONG UncorrectableError1: 2; // 32-33 + ULONG ReadDirty1: 1; // 34 + ULONG Reserved4: 1; // 35 + ULONG ParityErrorOnAddressCommand1: 1; // 36 + ULONG ParityErrorOnVictim1: 1; // 37 + ULONG Reserved5: 2; // 38-39 + ULONG ECCSyndrome1: 8; // 40-47 + ULONG ECCSyndrome3: 8; // 48-55 + ULONG Reserved6: 4; // 56-59 + ULONG EVBCommand1: 4; // 60-63 + }; + ULONGLONG all; + +} GAMMA_EVBUER_CSR6, *PGAMMA_EVBUER_CSR6; + +typedef struct _GAMMA_EVBUEAR_CSR7 { + union { + ULONG EVBUncorrectableErrorAddress0: 32; // 0-31 + ULONG EVBUncorrectableErrorAddress1: 32; // 32-63 + }; + ULONGLONG all; + +} GAMMA_EVBEUAR_CSR7, *PGAMMA_EVBUEAR_CSR7; + + +typedef struct _GAMMA_CBER_CSR18 { + union { + ULONG UncorrectableReadError0: 1; // 0 + ULONG Reserved1: 3; // 1-3 + ULONG CAParity0ErrorL: 1; // 4 + ULONG CAParity0ErrorH: 1; // 5 + ULONG Reserved2: 2; // 6-7 + ULONG ParityErrorWriteDataLW0: 1; // 8 + ULONG ParityErrorWriteDataLW1: 1; // 9 + ULONG ParityErrorWriteDataLW4: 1; // 10 + ULONG ParityErrorWriteDataLW5: 1; // 11 + ULONG Reserved3: 4; // 12-15 + ULONG ParityErrorReadDataLW0: 1; // 16 + ULONG ParityErrorReadDataLW1: 1; // 17 + ULONG ParityErrorReadDataLW4: 1; // 18 + ULONG ParityErrorReadDataLW5: 1; // 19 + ULONG UnexpectedSharedResponse: 1; // 20 + ULONG Reserved4: 3; // 21-23 + ULONG CANotAcked: 1; // 24 + ULONG Reserved5: 3; // 25-27 + ULONG Data0NotAcked: 1; // 28 + ULONG Data1NotAcked: 1; // 29 + ULONG Reserved6: 2; // 30-31 + + ULONG UncorrectableReadError1: 1; // 32 + ULONG Reserved7: 3; // 33-35 + ULONG CAParity1ErrorL: 1; // 36 + ULONG CAParity1ErrorH: 1; // 37 + ULONG Reserved8: 2; // 38-39 + ULONG ParityErrorWriteDataLW2: 1; // 40 + ULONG ParityErrorWriteDataLW3: 1; // 41 + ULONG ParityErrorWriteDataLW6: 1; // 42 + ULONG ParityErrorWriteDataLW7: 1; // 43 + ULONG Reserved9: 4; // 44-47 + ULONG ParityErrorReadDataLW2: 1; // 48 + ULONG ParityErrorReadDataLW3: 1; // 49 + ULONG ParityErrorReadDataLW6: 1; // 50 + ULONG ParityErrorReadDataLW7: 1; // 51 + ULONG Reserved10: 12; // 52-63 + }; + ULONGLONG all; + +} GAMMA_CBER_CSR18, *PGAMMA_CBER_CSR18; + +typedef struct _GAMMA_CBEALR_CSR19 { + union { + ULONG CBusErrorLowAddress0: 32; // 0-31 + ULONG CBusErrorLowAddress1: 32; // 32-63 + }; + ULONGLONG all; + +} GAMMA_CBEALR_CSR19, *PGAMMA_CBEALR_CSR19; + +typedef struct _GAMMA_CBEAHR_CSR20 { + union { + ULONG CBusErrorHighAddress0: 32; // 0-31 + ULONG CBusErrorHighAddress1: 32; // 32-63 + }; + ULONGLONG all; + +} GAMMA_CBEAHR_CSR20, *PGAMMA_CBEAHR_CSR20; + + +typedef struct _SGL_MEM_CSR0 { + union { + ULONG ErrorSummary1: 1; // 0 + ULONG SyncError1: 1; // 1 + ULONG CAParityError1: 1; // 2 + ULONG CAMissedParityError1: 1; // 3 + ULONG WriteParityError1: 1; // 4 + ULONG MissedWriteParityError1: 1; // 5 + ULONG Reserved1: 2; // 6-7 + + ULONG CAParityErrorLW0: 1; // 8 + ULONG CAParityErrorLW2: 1; // 9 + ULONG ParityErrorLW0: 1; // 10 + ULONG ParityErrorLW2: 1; // 11 + ULONG ParityErrorLW4: 1; // 12 + ULONG ParityErrorLW6: 1; // 13 + ULONG Reserved2: 2; // 14-15 + + ULONG EDCUncorrectable1: 1; // 16 + ULONG EDCMissedUncorrectable1: 1; // 17 + ULONG EDCCorrectable1: 1; // 18 + ULONG EDCMissdedCorrectable1: 1; // 19 + ULONG Reserved3: 12; // 20-31 + + ULONG ErrorSummary2: 1; // 32 + ULONG SyncError2: 1; // 33 + ULONG CAParityError2: 1; // 34 + ULONG CAMissedParityError2: 1; // 35 + ULONG WriteParityError2: 1; // 36 + ULONG MissedWriteParityError2: 1; // 37 + ULONG Reserved4: 2; // 38-39 + + ULONG CAParityErrorLW1: 1; // 40 + ULONG CAParityErrorLW3: 1; // 41 + ULONG ParityErrorLW1: 1; // 42 + ULONG ParityErrorLW3: 1; // 43 + ULONG ParityErrorLW5: 1; // 44 + ULONG ParityErrorLW7: 1; // 45 + ULONG Reserved5: 2; // 46-47 + + ULONG EDCUncorrectable2: 1; // 48 + ULONG EDCMissedUncorrectable2: 1; // 49 + ULONG EDCCorrectable2: 1; // 50 + ULONG EDCMissdedCorrectable2: 1; // 51 + ULONG Reserved6: 12; // 52-63 + }; + ULONGLONG all; + +} SGL_MEM_CSR0, *PSGL_MEM_CSR0; + +// +// Define the per-processor data structures allocated in the PCR +// for each Gamma processor. +// +// NOTE: If the IpirSva field is moved, the change must be reflected in +// the routine HalpGammaIpiInterrupt +// + +typedef struct _GAMMA_PCR{ + ULONGLONG HalpCycleCount; // 64-bit per-processor cycle count + ULONGLONG IpirSva; // Superpage Va of per-processor IPIR CSR + PVOID CpuCsrsQva; // Qva of per-cpu csrs + EV5ProfileCount ProfileCount; // Profile counter state +} GAMMA_PCR, *PGAMMA_PCR; + +#define HAL_PCR ( (PGAMMA_PCR)(&(PCR->HalReserved)) ) + + +// +// Define Miscellaneous Gamma routines. +// + +VOID +WRITE_CPU_REGISTER( + PVOID, + ULONGLONG + ); + +ULONGLONG +READ_CPU_REGISTER( + PVOID + ); + +ULONGLONG +READ_MEM_REGISTER( + PVOID + ); + +BOOLEAN +HalpGammaDispatch( + VOID + ); + +VOID +HalpGammaIpiInterrupt( + VOID + ); + +#endif //!_LANGUAGE_ASSEMBLY + +#endif //_GAMMAH_ -- cgit v1.2.3