- // Determine if we should report the exception. We report all of them by default,\r
- // but if a debugger is attached don't report the breakpoint, debug, and step exceptions.\r
- // Note that EXCEPT_EBC_OVERFLOW is never reported by this VM implementation, so is\r
- // not included in the switch statement.\r
- //\r
- Report = TRUE;\r
- switch (ExceptionType) {\r
- case EXCEPT_EBC_UNDEFINED:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_UNDEFINED;\r
- break;\r
-\r
- case EXCEPT_EBC_DIVIDE_ERROR:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_DIVIDE_ERROR;\r
- break;\r
-\r
- case EXCEPT_EBC_DEBUG:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_DEBUG;\r
- Report = (BOOLEAN) ((mDebugExceptionCallback[ExceptionType] == NULL) ? TRUE : FALSE);\r
- break;\r
-\r
- case EXCEPT_EBC_BREAKPOINT:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_BREAKPOINT;\r
- Report = (BOOLEAN) ((mDebugExceptionCallback[ExceptionType] == NULL) ? TRUE : FALSE);\r
- break;\r
-\r
- case EXCEPT_EBC_INVALID_OPCODE:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_INVALID_OPCODE;\r
- break;\r
-\r
- case EXCEPT_EBC_STACK_FAULT:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_STACK_FAULT;\r
- break;\r
-\r
- case EXCEPT_EBC_ALIGNMENT_CHECK:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_ALIGNMENT_CHECK;\r
- break;\r
-\r
- case EXCEPT_EBC_INSTRUCTION_ENCODING:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_INSTRUCTION_ENCODING;\r
- break;\r
-\r
- case EXCEPT_EBC_BAD_BREAK:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_BAD_BREAK;\r
- break;\r
-\r
- case EXCEPT_EBC_STEP:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_EBC_STEP;\r
- Report = (BOOLEAN) ((mDebugExceptionCallback[ExceptionType] == NULL) ? TRUE : FALSE);\r
- break;\r
-\r
- default:\r
- StatusCodeValue = EFI_SOFTWARE_EBC_EXCEPTION | EFI_SW_EC_NON_SPECIFIC;\r
- break;\r