[XDK]: Do not always redefine the ASSERT(MSG) macros with the NT_xxx ones, especially...
authorHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 25 Jan 2017 22:43:04 +0000 (22:43 +0000)
committerHermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
Wed, 25 Jan 2017 22:43:04 +0000 (22:43 +0000)
[FREELDR]
- "static"-ify some printing helper functions;
- hide the textmode cursor before blue-screening;
- disable interrupts before hanging forever.

svn path=/trunk/; revision=73596

reactos/boot/freeldr/freeldr/arch/i386/i386bug.c
reactos/sdk/include/xdk/rtlfuncs.h

index b938da2..aeed9ad 100644 (file)
@@ -35,7 +35,7 @@ char *i386ExceptionDescriptionText[] =
 
 #define SCREEN_ATTR 0x1F    // Bright white on blue background
 
-void
+static void
 i386PrintChar(char chr, ULONG x, ULONG y)
 {
     MachVideoPutChar(chr, SCREEN_ATTR, x, y);
@@ -45,7 +45,7 @@ i386PrintChar(char chr, ULONG x, ULONG y)
 ULONG i386_ScreenPosX = 0;
 ULONG i386_ScreenPosY = 0;
 
-void
+static void
 i386PrintText(char *pszText)
 {
     char chr;
@@ -66,7 +66,7 @@ i386PrintText(char *pszText)
     }
 }
 
-void
+static void
 PrintText(const char *format, ...)
 {
     va_list argptr;
@@ -79,7 +79,7 @@ PrintText(const char *format, ...)
     i386PrintText(buffer);
 }
 
-void
+static void
 i386PrintFrames(PKTRAP_FRAME TrapFrame)
 {
     FRAME *Frame;
@@ -105,6 +105,7 @@ i386PrintExceptionText(ULONG TrapIndex, PKTRAP_FRAME TrapFrame, PKSPECIAL_REGIST
 {
     PUCHAR InstructionPointer;
 
+    MachVideoHideShowTextCursor(FALSE);
     MachVideoClearScreen(SCREEN_ATTR);
     i386_ScreenPosX = 0;
     i386_ScreenPosY = 0;
@@ -182,7 +183,7 @@ FrLdrBugCheckWithMessage(
     CHAR Buffer[1024];
     va_list argptr;
 
-    /* Blue screen for the win */
+    MachVideoHideShowTextCursor(FALSE);
     MachVideoClearScreen(SCREEN_ATTR);
     i386_ScreenPosX = 0;
     i386_ScreenPosY = 0;
@@ -215,6 +216,7 @@ FrLdrBugCheckEx(
     PCHAR File,
     ULONG Line)
 {
+    MachVideoHideShowTextCursor(FALSE);
     MachVideoClearScreen(SCREEN_ATTR);
     i386_ScreenPosX = 0;
     i386_ScreenPosY = 0;
@@ -231,6 +233,8 @@ FrLdrBugCheckEx(
     PrintText("Bug Information:\n    %p\n    %p\n    %p\n    %p\n    %p\n\n",
               BugCheckInfo[0], BugCheckInfo[1], BugCheckInfo[2], BugCheckInfo[3], BugCheckInfo[4]);
 
+    _disable();
+    __halt();
     for (;;);
 }
 
index b3e82b8..821a644 100644 (file)
@@ -3314,7 +3314,7 @@ RtlCheckBit(
 # define NT_ASSERTMSGW NT_ASSERTMSGW_NOASSUME
 #endif /* NT_ASSERT_ALWAYS_ASSUMES */
 
-#if defined(_MSC_VER) && (defined(__REACTOS__) || defined(ASSERT_ALWAYS_NT_ASSERT))
+#if defined(_MSC_VER) && (defined(__REACTOS__) || defined(ASSERT_ALWAYS_NT_ASSERT)) && !defined(_BLDR_)
 #undef ASSERT
 #define ASSERT NT_ASSERT
 #undef ASSERTMSG