Use existing symbolic definitions for vector numbers instead of plain numbers and streamline the stringification further by using a macro. While at it, add the missing case for #CP. Signed-off-by: Mathias Krause <minipli@xxxxxxxxxxxxxx> --- lib/x86/processor.h | 1 + lib/x86/desc.c | 39 +++++++++++++++++++++------------------ 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/lib/x86/processor.h b/lib/x86/processor.h index 91a9022ef43c..5dd7bce024fd 100644 --- a/lib/x86/processor.h +++ b/lib/x86/processor.h @@ -36,6 +36,7 @@ #define MF_VECTOR 16 #define AC_VECTOR 17 #define MC_VECTOR 18 +#define XM_VECTOR 19 #define CP_VECTOR 21 #define X86_CR0_PE_BIT (0) diff --git a/lib/x86/desc.c b/lib/x86/desc.c index b293ae420f86..9402c0ef59d0 100644 --- a/lib/x86/desc.c +++ b/lib/x86/desc.c @@ -110,25 +110,28 @@ extern struct ex_record exception_table_start, exception_table_end; const char* exception_mnemonic(int vector) { switch(vector) { - case 0: return "#DE"; - case 1: return "#DB"; - case 2: return "#NMI"; - case 3: return "#BP"; - case 4: return "#OF"; - case 5: return "#BR"; - case 6: return "#UD"; - case 7: return "#NM"; - case 8: return "#DF"; - case 10: return "#TS"; - case 11: return "#NP"; - case 12: return "#SS"; - case 13: return "#GP"; - case 14: return "#PF"; - case 16: return "#MF"; - case 17: return "#AC"; - case 18: return "#MC"; - case 19: return "#XM"; +#define VEC(v) case v##_VECTOR: return "#" #v + VEC(DE); + VEC(DB); + VEC(NMI); + VEC(BP); + VEC(OF); + VEC(BR); + VEC(UD); + VEC(NM); + VEC(DF); + VEC(TS); + VEC(NP); + VEC(SS); + VEC(GP); + VEC(PF); + VEC(MF); + VEC(AC); + VEC(MC); + VEC(XM); + VEC(CP); default: return "#??"; +#undef VEC } } -- 2.39.2