- VA_START (Marker, Format);\r
- DebugVPrint (ErrorLevel, Format, Marker);\r
- VA_END (Marker);\r
+ //\r
+ // Make sure it will all fit in the passed in buffer.\r
+ //\r
+ TotalSize = sizeof (EFI_DEBUG_ASSERT_DATA) + AsciiStrLen (FileName) + 1 + AsciiStrLen (Description) + 1;\r
+ if (TotalSize <= EFI_STATUS_CODE_DATA_MAX_SIZE) {\r
+ //\r
+ // Fill in EFI_DEBUG_ASSERT_DATA\r
+ //\r
+ AssertData = (EFI_DEBUG_ASSERT_DATA *)Buffer;\r
+ AssertData->LineNumber = (UINT32)LineNumber;\r
+\r
+ //\r
+ // Copy Ascii FileName including NULL.\r
+ //\r
+ Temp = AsciiStrCpy ((CHAR8 *)(AssertData + 1), FileName);\r
+\r
+ //\r
+ // Copy Ascii Description. \r
+ //\r
+ AsciiStrCpy (Temp + AsciiStrLen (FileName) + 1, Description);\r
+\r
+ REPORT_STATUS_CODE_WITH_EXTENDED_DATA (\r
+ (EFI_ERROR_CODE | EFI_ERROR_UNRECOVERED),\r
+ (EFI_SOFTWARE_DXE_BS_DRIVER | EFI_SW_EC_ILLEGAL_SOFTWARE_STATE),\r
+ AssertData,\r
+ TotalSize\r
+ );\r
+ }\r
+\r
+ //\r
+ // Generate a Breakpoint, DeadLoop, or NOP based on PCD settings\r
+ //\r
+ if ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_ASSERT_BREAKPOINT_ENABLED) != 0) {\r
+ CpuBreakpoint ();\r
+ } else if ((PcdGet8(PcdDebugPropertyMask) & DEBUG_PROPERTY_ASSERT_DEADLOOP_ENABLED) != 0) {\r
+ CpuDeadLoop ();\r
+ }\r