Mercurial > hvf > hvf-old
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