From 7228dc135c3ca03f925feab93824288070896f2a Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Thu, 21 Oct 1999 11:13:38 +0000 Subject: [PATCH] Improved debug output and added hal READ_XXX and WRITE_XXX functions. svn path=/trunk/; revision=716 --- reactos/ntoskrnl/dbg/print.c | 97 +++++++++++------------------------ reactos/ntoskrnl/kd/kdebug.c | 39 +++++++++++--- reactos/ntoskrnl/makefile_rex | 25 +++++---- reactos/ntoskrnl/ntoskrnl.def | 32 ++++++------ reactos/ntoskrnl/ntoskrnl.edf | 34 ++++++------ 5 files changed, 110 insertions(+), 117 deletions(-) diff --git a/reactos/ntoskrnl/dbg/print.c b/reactos/ntoskrnl/dbg/print.c index 50aedb2656f..79b83b67598 100644 --- a/reactos/ntoskrnl/dbg/print.c +++ b/reactos/ntoskrnl/dbg/print.c @@ -1,4 +1,4 @@ -/* $Id: print.c,v 1.2 1999/10/16 21:08:23 ekohl Exp $ +/* $Id: print.c,v 1.3 1999/10/21 11:13:04 ekohl Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -14,7 +14,6 @@ #include #include #include -#include #include @@ -43,42 +42,11 @@ /* #define SERIAL_DEBUG_PORT 0x02f8 */ /* COM 2 */ #define SERIAL_DEBUG_BAUD_RATE 19200 -#define SERIAL_LINE_CONTROL (SR_LCR_CS8 | SR_LCR_ST1 | SR_LCR_PNO) #ifdef BOCHS_DEBUGGING #define BOCHS_LOGGER_PORT (0x3ed) #endif -#ifdef SERIAL_DEBUGGING -#define SER_RBR SERIAL_DEBUG_PORT + 0 -#define SER_THR SERIAL_DEBUG_PORT + 0 -#define SER_DLL SERIAL_DEBUG_PORT + 0 -#define SER_IER SERIAL_DEBUG_PORT + 1 -#define SER_DLM SERIAL_DEBUG_PORT + 1 -#define SER_IIR SERIAL_DEBUG_PORT + 2 -#define SER_LCR SERIAL_DEBUG_PORT + 3 -#define SR_LCR_CS5 0x00 -#define SR_LCR_CS6 0x01 -#define SR_LCR_CS7 0x02 -#define SR_LCR_CS8 0x03 -#define SR_LCR_ST1 0x00 -#define SR_LCR_ST2 0x04 -#define SR_LCR_PNO 0x00 -#define SR_LCR_POD 0x08 -#define SR_LCR_PEV 0x18 -#define SR_LCR_PMK 0x28 -#define SR_LCR_PSP 0x38 -#define SR_LCR_BRK 0x40 -#define SR_LCR_DLAB 0x80 -#define SER_MCR SERIAL_DEBUG_PORT + 4 -#define SR_MCR_DTR 0x01 -#define SR_MCR_RTS 0x02 -#define SER_LSR SERIAL_DEBUG_PORT + 5 -#define SR_LSR_TBE 0x20 -#define SER_MSR SERIAL_DEBUG_PORT + 6 -#endif - - /* FUNCTIONS ****************************************************************/ @@ -86,26 +54,19 @@ static VOID DbgDisplaySerialString(PCH String) { - PCH pch = String; + PCH pch = String; - while (*pch != 0) - { + while (*pch != 0) + { + if (*pch == '\n') + { + KdPortPutByte ('\r'); + } - while ((inb_p(SER_LSR) & SR_LSR_TBE) == 0) - ; + KdPortPutByte (*pch); - outb_p(SER_THR, *pch); - - if (*pch == '\n') - { - while ((inb_p(SER_LSR) & SR_LSR_TBE) == 0) - ; - - outb_p(SER_THR, '\r'); - } - - pch++; - } + pch++; + } } #endif /* SERIAL_DEBUGGING */ @@ -114,35 +75,35 @@ DbgDisplaySerialString(PCH String) static VOID DbgDisplayBochsString(PCH String) { - PCH pch = String; + PCH pch = String; - while (*pch != 0) - { - outb_p(BOCHS_LOGGER_PORT, *pch); + while (*pch != 0) + { + if (*pch == '\n') + { + WRITE_PORT_UCHAR((PUCHAR)BOCHS_LOGGER_PORT, '\r'); + } - if (*pch == '\n') - { - outb_p(BOCHS_LOGGER_PORT, '\r'); - } + WRITE_PORT_UCHAR((PUCHAR)BOCHS_LOGGER_PORT, *pch); - pch++; - } + pch++; + } } #endif /* BOCHS_DEBUGGING */ - VOID DbgInit (VOID) { #ifdef SERIAL_DEBUGGING - /* turn on DTR and RTS */ - outb_p(SER_MCR, SR_MCR_DTR | SR_MCR_RTS); - /* set baud rate, line control */ - outb_p(SER_LCR, SERIAL_LINE_CONTROL | SR_LCR_DLAB); - outb_p(SER_DLL, (115200 / SERIAL_DEBUG_BAUD_RATE) & 0xff); - outb_p(SER_DLM, ((115200 / SERIAL_DEBUG_BAUD_RATE) >> 8) & 0xff); - outb_p(SER_LCR, SERIAL_LINE_CONTROL); + KD_PORT_INFORMATION PortInfo; + + PortInfo.BaseAddress = SERIAL_DEBUG_PORT; + PortInfo.BaudRate = SERIAL_DEBUG_BAUD_RATE; + + KdPortInitialize (&PortInfo, + 0, + 0); #endif } diff --git a/reactos/ntoskrnl/kd/kdebug.c b/reactos/ntoskrnl/kd/kdebug.c index f886038f06f..0b2d8b34b08 100644 --- a/reactos/ntoskrnl/kd/kdebug.c +++ b/reactos/ntoskrnl/kd/kdebug.c @@ -1,11 +1,12 @@ -/* $Id: kdebug.c,v 1.1 1999/08/20 16:28:10 ea Exp $ +/* $Id: kdebug.c,v 1.2 1999/10/21 11:13:38 ekohl Exp $ * * reactos/ntoskrnl/kd/kdebug.c * */ -#include +#include -BYTE STDCALL KdPortPollByte(VOID); + +//BYTE STDCALL KdPortPollByte(VOID); /* DATA */ @@ -15,11 +16,37 @@ KdDebuggerEnabled = FALSE; BOOLEAN KdDebuggerNotPresent = TRUE; -BOOLEAN -KdComPortInUse = FALSE; +/* This is exported by hal.dll (Eric Kohl) */ +//ULONG +//KdComPortInUse = 0; +/* PRIVATE FUNCTIONS ********************************************************/ + +VOID +KdInit (VOID) +{ + + /* FIXME: parse kernel command line */ + + /* initialize debug port */ +#ifdef SERIAL_DEBUGGING + KD_PORT_INFORMATION PortInfo; + + PortInfo.BaseAddress = SERIAL_DEBUG_PORT; + PortInfo.BaudRate = SERIAL_DEBUG_BAUD_RATE; + + KdPortInitialize (&PortInfo, + 0, + 0); +#endif +} + + +/* PUBLIC FUNCTIONS *********************************************************/ + /* NTOSKRNL.KdPollBreakIn */ +/* BYTE STDCALL KdPollBreakIn ( @@ -28,7 +55,7 @@ KdPollBreakIn ( { return KdPortPollByte(); } - +*/ /* EOF */ diff --git a/reactos/ntoskrnl/makefile_rex b/reactos/ntoskrnl/makefile_rex index ca458e65b9a..a5090c52bab 100644 --- a/reactos/ntoskrnl/makefile_rex +++ b/reactos/ntoskrnl/makefile_rex @@ -1,4 +1,4 @@ -# $Id: makefile_rex,v 1.32 1999/10/16 00:17:40 ekohl Exp $ +# $Id: makefile_rex,v 1.33 1999/10/21 11:10:26 ekohl Exp $ # # ReactOS Operating System # @@ -61,9 +61,11 @@ LDR_OBJECTS = ldr/loader.o ldr/init.o ldr/syspath.o CC_OBJECTS = cc/cacheman.o cc/view.o +KD_OBJECTS = kd/kdebug.o + RESOURCE_OBJECT = $(TARGET).coff -objects: +objects: mkdir objects objects/hal.o: $(HAL_OBJECTS) @@ -108,25 +110,28 @@ objects/nt.o: $(NT_OBJECTS) objects/cc.o: $(CC_OBJECTS) $(LD) -r $(CC_OBJECTS) -o objects/cc.o +objects/kd.o: $(KD_OBJECTS) + $(LD) -r $(KD_OBJECTS) -o objects/kd.o + $(TARGET).coff: $(TARGET).rc ../include/reactos/resource.h OBJECTS = objects/hal.o objects/ke.o objects/rtl.o objects/mm.o \ objects/io.o objects/ob.o objects/ps.o objects/ex.o \ - objects/se.o objects/cm.o objects/dbg.o \ - objects/nt.o objects/cc.o objects/ldr.o \ - $(TARGET).coff - + objects/se.o objects/cm.o objects/dbg.o objects/nt.o \ + objects/cc.o objects/kd.o objects/ldr.o \ + $(TARGET).coff + ifeq ($(DOSCLI),yes) CLEAN_FILES = objects\*.o cc\*.o cm\*.o dbg\*.o ex\*.o hal\x86\*.o io\*.o \ ke\*.o ldr\*.o mm\*.o nt\*.o ob\*.o ps\*.o rtl\*.o se\*.o \ - utils\export\export.exe $(TARGET).o $(TARGET).a junk.tmp \ - base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff + kd\*.o utils\export\export.exe $(TARGET).o $(TARGET).a junk.tmp \ + base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff else CLEAN_FILES = objects/*.o cc/*.o cm/*.o dbg/*.o ex/*.o hal/x86/*.o io/*.o \ ke/*.o ldr/*.o mm/*.o nt/*.o ob/*.o ps/*.o rtl/*.o se/*.o \ - utils/export/export $(TARGET).o $(TARGET).a junk.tmp base.tmp \ - temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff + kd/*.o utils/export/export $(TARGET).o $(TARGET).a junk.tmp \ + base.tmp temp.exp $(TARGET).exe $(TARGET).sym $(TARGET).coff endif $(TARGET).exe: $(OBJECTS) $(TARGET).def diff --git a/reactos/ntoskrnl/ntoskrnl.def b/reactos/ntoskrnl/ntoskrnl.def index e8ce8e3be2e..ae1277033f2 100644 --- a/reactos/ntoskrnl/ntoskrnl.def +++ b/reactos/ntoskrnl/ntoskrnl.def @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.def,v 1.18 1999/10/16 21:09:12 ekohl Exp $ +; $Id: ntoskrnl.def,v 1.19 1999/10/21 11:10:26 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -389,7 +389,7 @@ HalSetBusDataByOffset HalSetDisplayParameters ;HalSetEnvironmentVariable ;HalSetProfileInterval -HalSetRealTimeClock +;HalSetRealTimeClock ;HalSetTimeIncrement ;HalStartNextProcessor ;HalStartProfileInterrupt @@ -406,9 +406,9 @@ HalSetRealTimeClock ;IoWritePartitionTable ;KdComPortInUse ;KdPortGetByte -;KdPortInitialize +KdPortInitialize ;KdPortPollByte -;KdPortPutByte +KdPortPutByte ;KdPortRestore ;KdPortSave KeAcquireSpinLock @@ -426,16 +426,16 @@ KeStallExecutionProcessor ;KfLowerIrql ;KfRaiseIrql ;KfReleaseSpinLock -;READ_PORT_BUFFER_UCHAR -;READ_PORT_BUFFER_ULONG -;READ_PORT_BUFFER_USHORT -;READ_PORT_UCHAR -;READ_PORT_ULONG -;READ_PORT_USHORT -;WRITE_PORT_BUFFER_UCHAR -;WRITE_PORT_BUFFER_ULONG -;WRITE_PORT_BUFFER_USHORT -;WRITE_PORT_UCHAR -;WRITE_PORT_ULONG -;WRITE_PORT_USHORT +READ_PORT_BUFFER_UCHAR +READ_PORT_BUFFER_ULONG +READ_PORT_BUFFER_USHORT +READ_PORT_UCHAR +READ_PORT_ULONG +READ_PORT_USHORT +WRITE_PORT_BUFFER_UCHAR +WRITE_PORT_BUFFER_ULONG +WRITE_PORT_BUFFER_USHORT +WRITE_PORT_UCHAR +WRITE_PORT_ULONG +WRITE_PORT_USHORT diff --git a/reactos/ntoskrnl/ntoskrnl.edf b/reactos/ntoskrnl/ntoskrnl.edf index 5f62aa775b6..dbe97a18172 100644 --- a/reactos/ntoskrnl/ntoskrnl.edf +++ b/reactos/ntoskrnl/ntoskrnl.edf @@ -1,4 +1,4 @@ -; $Id: ntoskrnl.edf,v 1.6 1999/10/16 21:09:12 ekohl Exp $ +; $Id: ntoskrnl.edf,v 1.7 1999/10/21 11:10:26 ekohl Exp $ ; ; reactos/ntoskrnl/ntoskrnl.def ; @@ -389,7 +389,7 @@ HalSetBusDataByOffset HalSetDisplayParameters ;HalSetEnvironmentVariable ;HalSetProfileInterval -HalSetRealTimeClock +;HalSetRealTimeClock ;HalSetTimeIncrement ;HalStartNextProcessor ;HalStartProfileInterrupt @@ -404,11 +404,11 @@ HalSetRealTimeClock ;IoReadPartitionTable ;IoSetPartitionInformation ;IoWritePartitionTable -;KdComPortInUse +KdComPortInUse ;KdPortGetByte -;KdPortInitialize +KdPortInitialize=KdPortInitialize@12 ;KdPortPollByte -;KdPortPutByte +KdPortPutByte=KdPortPutByte@4 ;KdPortRestore ;KdPortSave KeAcquireSpinLock @@ -426,15 +426,15 @@ KeStallExecutionProcessor ;KfLowerIrql ;KfRaiseIrql ;KfReleaseSpinLock -;READ_PORT_BUFFER_UCHAR -;READ_PORT_BUFFER_ULONG -;READ_PORT_BUFFER_USHORT -;READ_PORT_UCHAR -;READ_PORT_ULONG -;READ_PORT_USHORT -;WRITE_PORT_BUFFER_UCHAR -;WRITE_PORT_BUFFER_ULONG -;WRITE_PORT_BUFFER_USHORT -;WRITE_PORT_UCHAR -;WRITE_PORT_ULONG -;WRITE_PORT_USHORT +READ_PORT_BUFFER_UCHAR +READ_PORT_BUFFER_ULONG +READ_PORT_BUFFER_USHORT +READ_PORT_UCHAR +READ_PORT_ULONG +READ_PORT_USHORT +WRITE_PORT_BUFFER_UCHAR +WRITE_PORT_BUFFER_ULONG +WRITE_PORT_BUFFER_USHORT +WRITE_PORT_UCHAR +WRITE_PORT_ULONG +WRITE_PORT_USHORT