+
+/*
+ *
+ * Various performance counters
+ */
+#pragma pack(4) /* Make sure the structure stays as we defined it */
+struct hwCtrs {
+
+ unsigned int hwInVains; /* In vain */
+ unsigned int hwResets; /* Reset */
+ unsigned int hwMachineChecks; /* Machine check */
+ unsigned int hwDSIs; /* DSIs */
+ unsigned int hwISIs; /* ISIs */
+ unsigned int hwExternals; /* Externals */
+ unsigned int hwAlignments; /* Alignment */
+ unsigned int hwPrograms; /* Program */
+ unsigned int hwFloatPointUnavailable; /* Floating point */
+ unsigned int hwDecrementers; /* Decrementer */
+ unsigned int hwIOErrors; /* I/O error */
+ unsigned int hwrsvd0; /* Reserved */
+ unsigned int hwSystemCalls; /* System call */
+ unsigned int hwTraces; /* Trace */
+ unsigned int hwFloatingPointAssists; /* Floating point assist */
+ unsigned int hwPerformanceMonitors; /* Performance monitor */
+ unsigned int hwAltivecs; /* VMX */
+ unsigned int hwrsvd1; /* Reserved */
+ unsigned int hwrsvd2; /* Reserved */
+ unsigned int hwrsvd3; /* Reserved */
+ unsigned int hwInstBreakpoints; /* Instruction breakpoint */
+ unsigned int hwSystemManagements; /* System management */
+ unsigned int hwAltivecAssists; /* Altivec Assist */
+ unsigned int hwThermal; /* Thermals */
+ unsigned int hwrsvd5; /* Reserved */
+ unsigned int hwrsvd6; /* Reserved */
+ unsigned int hwrsvd7; /* Reserved */
+ unsigned int hwrsvd8; /* Reserved */
+ unsigned int hwrsvd9; /* Reserved */
+ unsigned int hwrsvd10; /* Reserved */
+ unsigned int hwrsvd11; /* Reserved */
+ unsigned int hwrsvd12; /* Reserved */
+ unsigned int hwrsvd13; /* Reserved */
+ unsigned int hwTrace601; /* Trace */
+ unsigned int hwSIGPs; /* SIGP */
+ unsigned int hwPreemptions; /* Preemption */
+ unsigned int hwContextSwitchs; /* Context switch */
+ unsigned int hwShutdowns; /* Shutdowns */
+ unsigned int hwChokes; /* System ABENDs */
+ unsigned int hwDataSegments; /* Data Segment Interruptions */
+ unsigned int hwInstructionSegments; /* Instruction Segment Interruptions */
+ unsigned int hwSoftPatches; /* Soft Patch interruptions */
+ unsigned int hwMaintenances; /* Maintenance interruptions */
+ unsigned int hwInstrumentations; /* Instrumentation interruptions */
+ unsigned int hwrsvd14; /* Reserved */
+ unsigned int hwhdec; /* 0B4 Hypervisor decrementer */
+
+ unsigned int hwspare0[11]; /* 0B8 Reserved */
+ unsigned int hwspare0a; /* 0E4 Reserved */
+ unsigned int hwspare0b; /* 0E8 Reserved */
+ unsigned int hwspare0c; /* 0EC Reserved */
+ unsigned int hwspare0d; /* 0F0 Reserved */
+ unsigned int hwIgnored; /* 0F4 Interruptions ignored */
+ unsigned int hwRedrives; /* 0F8 Number of redriven interrupts */
+ unsigned int hwSteals; /* 0FC Steals */
+/* 100 */
+
+ unsigned int hwMckHang; /* ? */
+ unsigned int hwMckSLBPE; /* ? */
+ unsigned int hwMckTLBPE; /* ? */
+ unsigned int hwMckERCPE; /* ? */
+ unsigned int hwMckL1DPE; /* ? */
+ unsigned int hwMckL1TPE; /* ? */
+ unsigned int hwMckUE; /* ? */
+ unsigned int hwMckIUE; /* ? */
+ unsigned int hwMckIUEr; /* ? */
+ unsigned int hwMckDUE; /* ? */
+ unsigned int hwMckDTW; /* ? */
+ unsigned int hwMckUnk; /* ? */
+ unsigned int hwMckExt; /* ? */
+ unsigned int hwMckICachePE; /* ? */
+ unsigned int hwMckITagPE; /* ? */
+ unsigned int hwMckIEratPE; /* ? */
+ unsigned int hwMckDEratPE; /* ? */
+ unsigned int hwspare2[15]; /* Pad to next 128 bndry */
+/* 0x180 */
+
+ unsigned int napStamp[2]; /* Time base when we napped */
+ unsigned int napTotal[2]; /* Total nap time in ticks */
+ unsigned int numSIGPast; /* Number of SIGP asts recieved */
+ unsigned int numSIGPcpureq; /* Number of SIGP cpu requests recieved */
+ unsigned int numSIGPdebug; /* Number of SIGP debugs recieved */
+ unsigned int numSIGPwake; /* Number of SIGP wakes recieved */
+ unsigned int numSIGPtimo; /* Number of SIGP send timeouts */
+ unsigned int numSIGPmast; /* Number of SIGPast messages merged */
+ unsigned int numSIGPmwake; /* Number of SIGPwake messages merged */
+
+ unsigned int hwWalkPhys; /* Number of entries to hw_walk_phys */
+ unsigned int hwWalkFull; /* Full purge of connected PTE's */
+ unsigned int hwWalkMerge; /* RC merge of connected PTE's */
+ unsigned int hwWalkQuick; /* Quick scan of connected PTE's */
+ unsigned int numSIGPcall; /* Number of SIGPcall messages received */
+
+ unsigned int hwspare3[16]; /* Pad to 512 */
+
+};
+#pragma pack()
+
+typedef struct hwCtrs hwCtrs;
+
+struct patch_entry {
+ unsigned int *addr;
+ unsigned int data;
+ unsigned int type;
+ unsigned int value;