changeset 617:a2bf150177bd

include: move MCH Interrupt code struct definition to top-level include Signed-off-by: Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
author Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
date Tue, 13 Dec 2011 20:56:14 -0500
parents 6c5c07059d12
children 535aec703236
files cp/include/interrupt.h include/arch.h
diffstat 2 files changed, 60 insertions(+), 51 deletions(-) [+]
line wrap: on
line diff
--- a/cp/include/interrupt.h	Mon Dec 12 19:31:14 2011 -0500
+++ b/cp/include/interrupt.h	Tue Dec 13 20:56:14 2011 -0500
@@ -16,53 +16,6 @@
 	u32 param;
 } __attribute__((packed));
 
-struct mch_int_code {
-	u8 sd:1,		/* System Damage */
-	   pd:1,		/* Instruction-processing damage */
-	   sr:1,		/* System recovery */
-	   _pad0:1,
-	   cd:1,		/* Timing-facility damage */
-	   ed:1,		/* External damage */
-	   _pad1:1,
-	   dg:1;		/* Degradation */
-	u8 w:1,			/* Warning */
-	   cp:1,		/* Channel report pending */
-	   sp:1,		/* Service-processor damage */
-	   ck:1,		/* Channel-subsystem damage */
-	   _pad2:2,
-	   b:1,			/* Backed up */
-	   _pad3:1;
-	u8 se:1,		/* Storage error uncorrected */
-	   sc:1,		/* Storage error corrected */
-	   ke:1,		/* Storage-key error uncorrected */
-	   ds:1,		/* Storage degradation */
-	   wp:1,		/* PSW-MWP validity */
-	   ms:1,		/* PSW mask and key validity */
-	   pm:1,		/* PSW program-mask and condition-code validity */
-	   ia:1;		/* PSW-instruction-address validity */
-	u8 fa:1,		/* Failing-storage-address validity */
-	   _pad4:1,
-	   ec:1,		/* External-damage-code */
-	   fp:1,		/* Floating-point-register validity */
-	   gr:1,		/* General-register validity */
-	   cr:1,		/* Control-register validity */
-	   _pad5:1,
-	   st:1;		/* Storage logical validity */
-	u8 ie:1,		/* Indirect storage error */
-	   ar:1,		/* Access-register validity */
-	   da:1,		/* Delayed-access exception */
-	   _pad6:5;
-	u8 _pad7:2,
-	   pr:1,		/* TOD-programable-register validity */
-	   fc:1,		/* Floating-point-control-register validity */
-	   ap:1,		/* Ancilary report */
-	   _pad8:1,
-	   ct:1,		/* CPU-timer validity */
-	   cc:1;		/* Clock-comparator validity */
-	u8 _pad9;
-	u8 _pad10;
-} __attribute__((packed));
-
 #define PSA_INT_GPR	((u64*) 0x200)
 #define PSA_TMP_PSW	((struct psw*) 0x280)
 
@@ -83,10 +36,6 @@
 #define PGM_INT_ILC	((u8*) 0x8d)
 #define PGM_INT_CODE	((u16*) 0x8e)
 
-#define MCH_INT_OLD_PSW ((void*) 0x160)
-#define MCH_INT_NEW_PSW ((void*) 0x1e0)
-#define MCH_INT_CODE	((struct mch_int_code*) 232)
-
 /*
  * Assembly stubs to call the C-handlers
  */
--- a/include/arch.h	Mon Dec 12 19:31:14 2011 -0500
+++ b/include/arch.h	Tue Dec 13 20:56:14 2011 -0500
@@ -8,6 +8,9 @@
 #ifndef __ARCH_H
 #define __ARCH_H
 
+/*
+ * PSW and PSW handling
+ */
 struct psw {
 	u8 _zero0:1,
 	   r:1,			/* PER Mask (R)			*/
@@ -45,6 +48,9 @@
 	);
 }
 
+/*
+ * Control Register handling
+ */
 #define set_cr(cr, val)						\
 	do {							\
 		u64 lval = (val);				\
@@ -71,4 +77,58 @@
 		reg;						\
 	 })
 
+/*
+ * Machine Check Interrupt related structs & locations
+ */
+struct mch_int_code {
+	u8 sd:1,		/* System Damage */
+	   pd:1,		/* Instruction-processing damage */
+	   sr:1,		/* System recovery */
+	   _pad0:1,
+	   cd:1,		/* Timing-facility damage */
+	   ed:1,		/* External damage */
+	   _pad1:1,
+	   dg:1;		/* Degradation */
+	u8 w:1,			/* Warning */
+	   cp:1,		/* Channel report pending */
+	   sp:1,		/* Service-processor damage */
+	   ck:1,		/* Channel-subsystem damage */
+	   _pad2:2,
+	   b:1,			/* Backed up */
+	   _pad3:1;
+	u8 se:1,		/* Storage error uncorrected */
+	   sc:1,		/* Storage error corrected */
+	   ke:1,		/* Storage-key error uncorrected */
+	   ds:1,		/* Storage degradation */
+	   wp:1,		/* PSW-MWP validity */
+	   ms:1,		/* PSW mask and key validity */
+	   pm:1,		/* PSW program-mask and condition-code validity */
+	   ia:1;		/* PSW-instruction-address validity */
+	u8 fa:1,		/* Failing-storage-address validity */
+	   _pad4:1,
+	   ec:1,		/* External-damage-code */
+	   fp:1,		/* Floating-point-register validity */
+	   gr:1,		/* General-register validity */
+	   cr:1,		/* Control-register validity */
+	   _pad5:1,
+	   st:1;		/* Storage logical validity */
+	u8 ie:1,		/* Indirect storage error */
+	   ar:1,		/* Access-register validity */
+	   da:1,		/* Delayed-access exception */
+	   _pad6:5;
+	u8 _pad7:2,
+	   pr:1,		/* TOD-programable-register validity */
+	   fc:1,		/* Floating-point-control-register validity */
+	   ap:1,		/* Ancilary report */
+	   _pad8:1,
+	   ct:1,		/* CPU-timer validity */
+	   cc:1;		/* Clock-comparator validity */
+	u8 _pad9;
+	u8 _pad10;
+} __attribute__((packed));
+
+#define MCH_INT_OLD_PSW ((void*) 0x160)
+#define MCH_INT_NEW_PSW ((void*) 0x1e0)
+#define MCH_INT_CODE	((struct mch_int_code*) 0xe8)
+
 #endif