Added tag v0.15-rc4 for changeset 2a97f14b9016
[hvf.git] / cp / nucleus / mch.c
bloba8ed41fdf8a187203bfc5b30c340eff6b46eaf47
1 /*
2 * (C) Copyright 2007-2011 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
4 * This file is released under the GPLv2. See the COPYING file for more
5 * details.
6 */
8 #include <interrupt.h>
9 #include <channel.h>
10 #include <sclp.h>
12 static void get_crw()
14 struct crw crw;
15 int ret;
17 do {
18 ret = store_crw(&crw);
19 if (ret)
20 break;
22 sclp_msg("%08x:", *(u32*)&crw);
23 sclp_msg("RSC: %x", crw.rsc);
24 sclp_msg("ERC: %x", crw.erc);
25 sclp_msg("ID: %x", crw.id);
27 if (!crw.c)
28 break;
29 } while(1);
32 void __mch_int_handler(void)
34 sclp_msg("MCH INTERRUPT!");
35 sclp_msg("%016llx: ", *(u64*)MCH_INT_CODE);
36 if (MCH_INT_CODE->sd)
37 sclp_msg("-> system damage");
38 if (MCH_INT_CODE->pd)
39 sclp_msg("-> instruction processing damage");
40 if (MCH_INT_CODE->sr)
41 sclp_msg("-> system recovery");
42 if (MCH_INT_CODE->cd)
43 sclp_msg("-> timing-facility damage");
44 if (MCH_INT_CODE->ed)
45 sclp_msg("-> external damage");
46 if (MCH_INT_CODE->dg)
47 sclp_msg("-> degradation");
48 if (MCH_INT_CODE->w)
49 sclp_msg("-> warning");
50 if (MCH_INT_CODE->cp)
51 sclp_msg("-> channel report pending");
52 if (MCH_INT_CODE->sp)
53 sclp_msg("-> service-processor damage");
54 if (MCH_INT_CODE->ck)
55 sclp_msg("-> channel-subsystem damage");
57 if (MCH_INT_CODE->sd)
58 BUG();
60 if (MCH_INT_CODE->ck)
61 BUG();
63 if (MCH_INT_CODE->cp)
64 get_crw();