From f504d0f400a5ccb2a206f8a4b7d67ee7ca19543f Mon Sep 17 00:00:00 2001 From: Huang Ying Date: Fri, 5 Dec 2008 17:48:36 +0100 Subject: Add a flag IN_IRQ to MCE syntax to specify that the MCE should be injected in IRQ context. Signed-off-by: Huang Ying --- mce.lex | 1 + mce.y | 3 ++- parser.h | 4 ++++ 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/mce.lex b/mce.lex index 41ccf3f..a439526 100644 --- a/mce.lex +++ b/mce.lex @@ -49,6 +49,7 @@ static struct key { KEY(MCGSTATUS), KEY(NOBROADCAST), KEY(HOLD), + KEY(IN_IRQ), KEYVAL(CORRECTED, MCI_STATUS_VAL), // checkme KEYVAL(UNCORRECTED, MCI_STATUS_VAL|MCI_STATUS_UC|MCI_STATUS_EN), KEYVAL(FATAL, MCI_STATUS_VAL|MCI_STATUS_UC|MCI_STATUS_EN diff --git a/mce.y b/mce.y index 436796d..0ce3913 100644 --- a/mce.y +++ b/mce.y @@ -18,7 +18,7 @@ static void init(void); %} -%token STATUS RIP TSC ADDR MISC CPU BANK MCGSTATUS NOBROADCAST HOLD +%token STATUS RIP TSC ADDR MISC CPU BANK MCGSTATUS NOBROADCAST HOLD IN_IRQ %token CORRECTED UNCORRECTED FATAL MCE %token NUMBER %token SYMBOL @@ -61,6 +61,7 @@ mce_term: STATUS status_list { m.status = $2; } | MISC NUMBER { m.misc = $2; m.status |= MCI_STATUS_MISCV; } | NOBROADCAST { mce_flags |= MCE_NOBROADCAST; } | HOLD { mce_flags |= MCE_HOLD; } + | IN_IRQ { m.pad = MCEC_IRQ; } ; mcgstatus_list: /* empty */ diff --git a/parser.h b/parser.h index 36dd504..d033dbf 100644 --- a/parser.h +++ b/parser.h @@ -17,3 +17,7 @@ enum mceflags { extern enum mceflags mce_flags; +enum mce_context { + MCEC_PROCESS, + MCEC_IRQ, +}; -- cgit 1.2.3-korg