[ros-diffs] [ion] 24977: - Add profil.c and stub HalStartProfileInterrupt, HalStopProfileInterrupt and HalSetProfileInterval, and export these functions. - KdComPortInUse is exported by HAL, not kdcom, so make the change. - Register the KD support routines that kdcom on NT uses and implement most of them (except support for PCI Debug Cards). - I can now get Windows to recognize the HAL but it freezes during loading (Due to broken IRQL implementation) and WinDBG won't connect to it.

ion at svn.reactos.org ion at svn.reactos.org
Wed Nov 29 23:12:51 CET 2006


Author: ion
Date: Thu Nov 30 01:12:50 2006
New Revision: 24977

URL: http://svn.reactos.org/svn/reactos?rev=24977&view=rev
Log:
- Add profil.c and stub HalStartProfileInterrupt, HalStopProfileInterrupt and HalSetProfileInterval, and export these functions.
- KdComPortInUse is exported by HAL, not kdcom, so make the change.
- Register the KD support routines that kdcom on NT uses and implement most of them (except support for PCI Debug Cards).
- I can now get Windows to recognize the HAL but it freezes during loading (Due to broken IRQL implementation) and WinDBG won't connect to it.

Added:
    trunk/reactos/hal/halx86/generic/profil.c
Modified:
    trunk/reactos/drivers/base/kdcom/kdcom.def
    trunk/reactos/hal/hal/hal.def
    trunk/reactos/hal/halx86/generic/bus.c
    trunk/reactos/hal/halx86/generic/generic.rbuild
    trunk/reactos/hal/halx86/generic/misc.c
    trunk/reactos/hal/halx86/generic/pci.c
    trunk/reactos/hal/halx86/generic/processor.c
    trunk/reactos/hal/halx86/generic/sysinfo.c
    trunk/reactos/hal/halx86/include/halp.h

Modified: trunk/reactos/drivers/base/kdcom/kdcom.def
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/drivers/base/kdcom/kdcom.def?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/drivers/base/kdcom/kdcom.def (original)
+++ trunk/reactos/drivers/base/kdcom/kdcom.def Thu Nov 30 01:12:50 2006
@@ -1,7 +1,6 @@
 LIBRARY kdcom.dll
 EXPORTS
 
-KdComPortInUse=_KdComPortInUse
 KdPortGetByte at 4
 KdPortGetByteEx at 8
 KdPortInitialize at 12

Modified: trunk/reactos/hal/hal/hal.def
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal/hal.def?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/hal/hal.def (original)
+++ trunk/reactos/hal/hal/hal.def Thu Nov 30 01:12:50 2006
@@ -13,6 +13,7 @@
 @KeAcquireInStackQueuedSpinLockRaiseToSynch at 8
 @KeAcquireSpinLockRaiseToSynch at 4
 @KeAcquireQueuedSpinLock at 4
+ at KeAcquireQueuedSpinLockRaiseToSynch@4
 @KeReleaseInStackQueuedSpinLock at 4
 @KeReleaseQueuedSpinLock at 8
 @KeTryToAcquireQueuedSpinLock at 8
@@ -57,12 +58,12 @@
 HalSetBusDataByOffset at 24
 HalSetDisplayParameters at 8
 HalSetEnvironmentVariable at 8
-;HalSetProfileInterval at 4
+HalSetProfileInterval at 4
 HalSetRealTimeClock at 4
 HalSetTimeIncrement at 4
 HalStartNextProcessor at 8
-;HalStartProfileInterrupt at 4
-;HalStopProfileInterrupt at 4
+HalStartProfileInterrupt at 4
+HalStopProfileInterrupt at 4
 HalTranslateBusAddress at 24
 IoAssignDriveLetters at 16=HalpAssignDriveLetters at 16
 IoFlushAdapterBuffers at 24
@@ -73,6 +74,7 @@
 IoSetPartitionInformation at 16=HalpSetPartitionInformation at 16
 IoWritePartitionTable at 20=HalpWritePartitionTable at 20
 KeAcquireSpinLock at 8
+KdComPortInUse=_KdComPortInUse
 KeFlushWriteBuffer at 0
 KeGetCurrentIrql at 0
 KeLowerIrql at 4

Modified: trunk/reactos/hal/halx86/generic/bus.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/bus.c?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/bus.c (original)
+++ trunk/reactos/hal/halx86/generic/bus.c Thu Nov 30 01:12:50 2006
@@ -17,6 +17,22 @@
 ULONG HalpBusType;
 
 /* PRIVATE FUNCTIONS *********************************************************/
+
+VOID
+NTAPI
+HalpRegisterKdSupportFunctions(VOID)
+{
+    /* Register PCI Device Functions */
+    KdSetupPciDeviceForDebugging = HalpSetupPciDeviceForDebugging;
+    KdReleasePciDeviceforDebugging = HalpReleasePciDeviceForDebugging;
+
+    /* Register memory functions */
+    KdMapPhysicalMemory64 = HalpMapPhysicalMemory64;
+    KdUnmapVirtualAddress = HalpUnmapVirtualAddress;
+
+    /* Register ACPI stub */
+    KdCheckPowerButton = HalpCheckPowerButton;
+}
 
 NTSTATUS
 NTAPI

Modified: trunk/reactos/hal/halx86/generic/generic.rbuild
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/generic.rbuild?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/generic.rbuild (original)
+++ trunk/reactos/hal/halx86/generic/generic.rbuild Thu Nov 30 01:12:50 2006
@@ -12,6 +12,7 @@
 	<file>misc.c</file>
 	<file>pci.c</file>
 	<file>portio.c</file>
+    <file>profil.c</file>
 	<file>reboot.c</file>
 	<file>sysinfo.c</file>
 	<file>timer.c</file>

Modified: trunk/reactos/hal/halx86/generic/misc.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/misc.c?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/misc.c (original)
+++ trunk/reactos/hal/halx86/generic/misc.c Thu Nov 30 01:12:50 2006
@@ -7,13 +7,43 @@
  *                  Eric Kohl (ekohl at abo.rhein-zeitung.de)
  */
 
-/* INCLUDES *****************************************************************/
+/* INCLUDES ******************************************************************/
 
 #include <hal.h>
 #define NDEBUG
 #include <debug.h>
 
-/* FUNCTIONS ****************************************************************/
+/* PRIVATE FUNCTIONS *********************************************************/
+
+VOID
+NTAPI
+HalpCheckPowerButton(VOID)
+{
+    /* Nothing to do on non-ACPI */
+    return;
+}
+
+PVOID
+NTAPI
+HalpMapPhysicalMemory64(IN PHYSICAL_ADDRESS PhysicalAddress,
+                        IN ULONG NumberPage)
+{
+    /* Use kernel memory manager I/O map facilities */
+    return MmMapIoSpace(PhysicalAddress,
+                        NumberPage << PAGE_SHIFT,
+                        MmNonCached);
+}
+
+VOID
+NTAPI
+HalpUnmapVirtualAddress(IN PVOID VirtualAddress,
+                        IN ULONG NumberPages)
+{
+    /* Use kernel memory manager I/O map facilities */
+    return MmUnmapIoSpace(VirtualAddress, NumberPages << PAGE_SHIFT);
+}
+
+/* FUNCTIONS *****************************************************************/
 
 /*
  * @implemented

Modified: trunk/reactos/hal/halx86/generic/pci.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/pci.c?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/pci.c (original)
+++ trunk/reactos/hal/halx86/generic/pci.c Thu Nov 30 01:12:50 2006
@@ -470,6 +470,23 @@
 
 NTSTATUS
 NTAPI
+HalpSetupPciDeviceForDebugging(IN PVOID LoaderBlock,
+                               IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
+{
+    DPRINT1("Unimplemented!\n");
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+HalpReleasePciDeviceForDebugging(IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice)
+{
+    DPRINT1("Unimplemented!\n");
+    return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
 HalpAssignPCISlotResources(IN PBUS_HANDLER BusHandler,
                            IN PBUS_HANDLER RootHandler,
                            IN PUNICODE_STRING RegistryPath,

Modified: trunk/reactos/hal/halx86/generic/processor.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/processor.c?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/processor.c (original)
+++ trunk/reactos/hal/halx86/generic/processor.c Thu Nov 30 01:12:50 2006
@@ -31,9 +31,11 @@
 
     /* Update the interrupt affinity and processor mask */
     InterlockedBitTestAndSet(&HalpActiveProcessors, ProcessorNumber);
-    InterlockedBitTestAndSet((PLONG)&HalpDefaultInterruptAffinity, ProcessorNumber);
+    InterlockedBitTestAndSet((PLONG)&HalpDefaultInterruptAffinity,
+                             ProcessorNumber);
 
-    /* FIXME: Register routines for KDCOM */
+    /* Register routines for KDCOM */
+    HalpRegisterKdSupportFunctions();
 }
 
 /*

Added: trunk/reactos/hal/halx86/generic/profil.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/profil.c?rev=24977&view=auto
==============================================================================
--- trunk/reactos/hal/halx86/generic/profil.c (added)
+++ trunk/reactos/hal/halx86/generic/profil.c Thu Nov 30 01:12:50 2006
@@ -1,0 +1,48 @@
+/*
+ * PROJECT:         ReactOS HAL
+ * LICENSE:         GPL - See COPYING in the top level directory
+ * FILE:            hal/halx86/generic/profil.c
+ * PURPOSE:         System Profiling
+ * PROGRAMMERS:     Alex Ionescu (alex.ionescu at reactos.org)
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
+{
+    KEBUGCHECK(0);
+    return;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
+{
+    KEBUGCHECK(0);
+    return;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG_PTR
+NTAPI
+HalSetProfileInterval(IN ULONG_PTR Interval)
+{
+    KEBUGCHECK(0);
+    return Interval;
+}

Modified: trunk/reactos/hal/halx86/generic/sysinfo.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/sysinfo.c?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/generic/sysinfo.c (original)
+++ trunk/reactos/hal/halx86/generic/sysinfo.c Thu Nov 30 01:12:50 2006
@@ -11,6 +11,8 @@
 #include <hal.h>
 #define NDEBUG
 #include <debug.h>
+
+ULONG KdComPortInUse = 0;
 
 /* FUNCTIONS *****************************************************************/
 

Modified: trunk/reactos/hal/halx86/include/halp.h
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halp.h?rev=24977&r1=24976&r2=24977&view=diff
==============================================================================
--- trunk/reactos/hal/halx86/include/halp.h (original)
+++ trunk/reactos/hal/halx86/include/halp.h Thu Nov 30 01:12:50 2006
@@ -9,10 +9,10 @@
 #define KPCR_BASE   0xFF000000
 
 /* WDK Hack */
-#define KdComPortInUse _KdComPortInUse
+#define KdComPortInUse          _KdComPortInUse
 
-#define HAL_APC_REQUEST	    0
-#define HAL_DPC_REQUEST	    1
+#define HAL_APC_REQUEST         0
+#define HAL_DPC_REQUEST         1
 
 /* CMOS Registers and Ports */
 #define CMOS_CONTROL_PORT       (PUCHAR)0x70
@@ -35,15 +35,6 @@
 #define INT_BCD(int)            \
     (UCHAR)(((int / 10) << 4) + (int % 10))
 
-//
-// Kernel Debugger Port Definition
-//
-typedef struct _KD_PORT_INFORMATION
-{
-    ULONG ComPort;
-    ULONG BaudRate;
-    ULONG BaseAddress;
-} KD_PORT_INFORMATION, *PKD_PORT_INFORMATION;
 /* adapter.c */
 PADAPTER_OBJECT STDCALL HalpAllocateAdapterEx(ULONG NumberOfMapRegisters,BOOLEAN IsMaster, BOOLEAN Dma32BitAddresses);
   
@@ -54,26 +45,63 @@
 VOID NTAPI HalpInitPICs(VOID);
 
 /* udelay.c */
-VOID HalpCalibrateStallExecution(VOID);
-
 VOID NTAPI HalpInitializeClock(VOID);
 
 /* pci.c */
 VOID HalpInitPciBus (VOID);
 
-/* enum.c */
-VOID HalpStartEnumerator (VOID);
-
 /* dma.c */
 VOID HalpInitDma (VOID);
-
-/* mem.c */
-PVOID HalpMapPhysMemory(ULONG PhysAddr, ULONG Size);
 
 /* Non-generic initialization */
 VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock);
 VOID HalpInitPhase1(VOID);
 VOID NTAPI HalpClockInterrupt(VOID);
+
+//
+// KD Support
+//
+VOID
+NTAPI
+HalpCheckPowerButton(
+    VOID
+);
+
+VOID
+NTAPI
+HalpRegisterKdSupportFunctions(
+    VOID
+);
+
+NTSTATUS
+NTAPI
+HalpSetupPciDeviceForDebugging(
+    IN PVOID LoaderBlock,
+    IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
+);
+
+NTSTATUS
+NTAPI
+HalpReleasePciDeviceForDebugging(
+    IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice
+);
+
+//
+// Memory routines
+//
+PVOID
+NTAPI
+HalpMapPhysicalMemory64(
+    IN PHYSICAL_ADDRESS PhysicalAddress,
+    IN ULONG NumberPage
+);
+
+VOID
+NTAPI
+HalpUnmapVirtualAddress(
+    IN PVOID VirtualAddress,
+    IN ULONG NumberPages
+);
 
 /* sysinfo.c */
 NTSTATUS




More information about the Ros-diffs mailing list