- Implemented InterlockedBitTestAndReset, InterlockedBitTestAndSet, InterlockedExchan...
[reactos.git] / reactos / ntoskrnl / kd / wrappers / bochs.c
index e958acf..f0f5517 100644 (file)
@@ -1,9 +1,9 @@
-/* 
+/*
  * COPYRIGHT:       See COPYING in the top level directory
  * PROJECT:         ReactOS kernel
  * FILE:            ntoskrnl/kd/wrappers/bochs.c
  * PURPOSE:         BOCHS Wrapper for Kd
- * 
+ *
  * PROGRAMMERS:     Alex Ionescu (alex@relsoft.net)
  */
 
 
 VOID
 STDCALL
-KdpBochsDebugPrint(IN PCH Message)
+KdpBochsDebugPrint(IN PCH Message,
+                   IN ULONG Length)
 {
     while (*Message != 0)
     {
         if (*Message == '\n')
         {
-            WRITE_PORT_UCHAR((PUCHAR)BOCHS_LOGGER_PORT, '\r');
+#if defined(_M_IX86) && defined(__GNUC__) 
+           /* Don't use WRITE_PORT_UCHAR because hal isn't initialized yet in the very early boot phase. */
+           __asm__("outb %b0, %w1\n\t" :: "a" ('\r'), "d" (BOCHS_LOGGER_PORT));
+#else
+           WRITE_PORT_UCHAR((PUCHAR)BOCHS_LOGGER_PORT, '\r');
+#endif
         }
+#if defined(_M_IX86) && defined(__GNUC__) 
+        /* Don't use WRITE_PORT_UCHAR because hal isn't initialized yet in the very early boot phase. */
+        __asm__("outb %b0, %w1\n\t" :: "a" (*Message), "d" (BOCHS_LOGGER_PORT));
+#else
         WRITE_PORT_UCHAR((PUCHAR)BOCHS_LOGGER_PORT, *Message);
+#endif
         Message++;
     }
 }
@@ -36,7 +47,7 @@ STDCALL
 KdpBochsInit(PKD_DISPATCH_TABLE WrapperTable,
              ULONG BootPhase)
 {
-    if (!KdDebuggerEnabled || !KdpDebugMode.Bochs) return;
+    if (!KdpDebugMode.Bochs) return;
 
     if (BootPhase == 0)
     {
@@ -47,7 +58,7 @@ KdpBochsInit(PKD_DISPATCH_TABLE WrapperTable,
     else if (BootPhase == 2)
     {
         HalDisplayString("\n   Bochs debugging enabled\n\n");
-    }    
+    }
 }
 
 /* EOF */