mirror of
https://github.com/reactos/reactos.git
synced 2024-11-18 21:13:52 +00:00
67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
/*
|
|
* 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)
|
|
*/
|
|
|
|
#include <ntoskrnl.h>
|
|
#define NDEBUG
|
|
#include <debug.h>
|
|
|
|
/* bochs debug output */
|
|
#define BOCHS_LOGGER_PORT ((PVOID)0xe9)
|
|
|
|
/* FUNCTIONS *****************************************************************/
|
|
|
|
VOID
|
|
NTAPI
|
|
KdpBochsDebugPrint(IN PCH Message,
|
|
IN ULONG Length)
|
|
{
|
|
if (!KdpDebugMode.Bochs) return;
|
|
|
|
while (*Message != 0)
|
|
{
|
|
if (*Message == '\n')
|
|
{
|
|
WRITE_PORT_UCHAR(BOCHS_LOGGER_PORT, '\r');
|
|
}
|
|
WRITE_PORT_UCHAR(BOCHS_LOGGER_PORT, *Message);
|
|
Message++;
|
|
}
|
|
}
|
|
|
|
VOID
|
|
NTAPI
|
|
KdpBochsInit(PKD_DISPATCH_TABLE DispatchTable,
|
|
ULONG BootPhase)
|
|
{
|
|
UCHAR Value;
|
|
if (!KdpDebugMode.Bochs) return;
|
|
|
|
if (BootPhase == 0)
|
|
{
|
|
Value = READ_PORT_UCHAR(BOCHS_LOGGER_PORT);
|
|
if (Value != (ULONG_PTR)BOCHS_LOGGER_PORT)
|
|
{
|
|
KdpDebugMode.Bochs = FALSE;
|
|
return;
|
|
}
|
|
|
|
/* Write out the functions that we support for now */
|
|
DispatchTable->KdpInitRoutine = KdpBochsInit;
|
|
DispatchTable->KdpPrintRoutine = KdpBochsDebugPrint;
|
|
|
|
/* Register as a Provider */
|
|
InsertTailList(&KdProviders, &DispatchTable->KdProvidersList);
|
|
}
|
|
else if (BootPhase == 2)
|
|
{
|
|
HalDisplayString("\r\n Bochs debugging enabled\r\n\r\n");
|
|
}
|
|
}
|
|
|
|
/* EOF */
|