Author: evb
Date: Tue Feb 9 03:26:28 2010
New Revision: 45518
URL:
http://svn.reactos.org/svn/reactos?rev=45518&view=rev
Log:
- New ARM HAL after 2 nights in the company of a madman.
- Many fixes, more implemented routines, support for ARMv7.
- Some Linux code, marked as GPL, from ARM Ltd in cache.s. All OS use this code.
Added:
trunk/reactos/hal/halarm/generic/beep.c (with props)
trunk/reactos/hal/halarm/generic/bus.c (with props)
trunk/reactos/hal/halarm/generic/cache.S (with props)
trunk/reactos/hal/halarm/generic/display.c (with props)
trunk/reactos/hal/halarm/generic/dma.c (with props)
trunk/reactos/hal/halarm/generic/drive.c (with props)
trunk/reactos/hal/halarm/generic/fmutex.c (with props)
trunk/reactos/hal/halarm/generic/halinit.c (with props)
trunk/reactos/hal/halarm/generic/misc.c (with props)
trunk/reactos/hal/halarm/generic/pic.c (with props)
trunk/reactos/hal/halarm/generic/portio.c (with props)
trunk/reactos/hal/halarm/generic/processor.c (with props)
trunk/reactos/hal/halarm/generic/profil.c (with props)
trunk/reactos/hal/halarm/generic/reboot.c (with props)
trunk/reactos/hal/halarm/generic/rtc.c (with props)
trunk/reactos/hal/halarm/generic/spinlock.c (with props)
trunk/reactos/hal/halarm/generic/sysinfo.c (with props)
trunk/reactos/hal/halarm/generic/timer.c (with props)
trunk/reactos/hal/halarm/generic/usage.c (with props)
trunk/reactos/hal/halarm/hal.rbuild (with props)
trunk/reactos/hal/halarm/hal_generic.rbuild (with props)
trunk/reactos/hal/halarm/versa/
- copied from r45365, trunk/reactos/hal/halarm/up/
Removed:
trunk/reactos/hal/halarm/generic/generic.rbuild
trunk/reactos/hal/halarm/generic/hal.c
trunk/reactos/hal/halarm/up/
Modified:
trunk/reactos/hal/hal.pspec
trunk/reactos/hal/hal.rbuild
trunk/reactos/hal/halarm/directory.rbuild
trunk/reactos/hal/halarm/include/hal.h
trunk/reactos/hal/halarm/include/halp.h
trunk/reactos/hal/halarm/versa/halinit_up.c
trunk/reactos/hal/halarm/versa/halup.rbuild
Modified: trunk/reactos/hal/hal.pspec
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal.pspec?rev=45518&am…
==============================================================================
--- trunk/reactos/hal/hal.pspec [iso-8859-1] (original)
+++ trunk/reactos/hal/hal.pspec [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -46,7 +46,7 @@
@ stdcall HalGetEnvironmentVariable(str long str)
@ fastcall -arch=arm HalGetInterruptSource()
@ stdcall HalGetInterruptVector(long long long long ptr ptr)
-@ stdcall HalHandleNMI(ptr)
+@ stdcall -arch=i386 HalHandleNMI(ptr)
@ stdcall HalInitSystem(long ptr)
@ stdcall HalInitializeProcessor(long ptr)
@ stdcall HalMakeBeep(long)
Modified: trunk/reactos/hal/hal.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal.rbuild?rev=45518&a…
==============================================================================
--- trunk/reactos/hal/hal.rbuild [iso-8859-1] (original)
+++ trunk/reactos/hal/hal.rbuild [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,9 +1,12 @@
<?xml version="1.0"?>
<!DOCTYPE group SYSTEM "../tools/rbuild/project.dtd">
<group
xmlns:xi="http://www.w3.org/2001/XInclude">
- <directory name="halx86">
- <xi:include href="halx86/directory.rbuild" />
- </directory>
+
+ <if property="ARCH" value="i386">
+ <directory name="halx86">
+ <xi:include href="halx86/directory.rbuild" />
+ </directory>
+ </if>
<if property="ARCH" value="powerpc">
<directory name="halppc">
Modified: trunk/reactos/hal/halarm/directory.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/directory.rbuil…
==============================================================================
--- trunk/reactos/hal/halarm/directory.rbuild [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/directory.rbuild [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,10 +1,11 @@
<?xml version="1.0"?>
-<!DOCTYPE group SYSTEM "../../tools/rbuild/project.dtd">
+<!DOCTYPE group SYSTEM "../tools/rbuild/project.dtd">
<group
xmlns:xi="http://www.w3.org/2001/XInclude">
- <directory name="generic">
- <xi:include href="generic/generic.rbuild" />
- </directory>
- <directory name="up">
- <xi:include href="up/halup.rbuild" />
- </directory>
+
+ <xi:include href="hal_generic.rbuild" />
+
+ <if property="SARCH" value="versatile">
+ <xi:include href="versa/halup.rbuild" />
+ </if>
+
</group>
Added: trunk/reactos/hal/halarm/generic/beep.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/beep.c?…
==============================================================================
--- trunk/reactos/hal/halarm/generic/beep.c (added)
+++ trunk/reactos/hal/halarm/generic/beep.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,26 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/beep.c
+ * PURPOSE: Speaker support (beeping)
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalMakeBeep(IN ULONG Frequency)
+{
+ UNIMPLEMENTED;
+ return FALSE;
+}
Propchange: trunk/reactos/hal/halarm/generic/beep.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/bus.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/bus.c?r…
==============================================================================
--- trunk/reactos/hal/halarm/generic/bus.c (added)
+++ trunk/reactos/hal/halarm/generic/bus.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,151 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/bus.c
+ * PURPOSE: Bus Support Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* GLOBALS ********************************************************************/
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+/*
+ * @unimplemented
+ */
+NTSTATUS
+NTAPI
+HalAdjustResourceList(IN PIO_RESOURCE_REQUIREMENTS_LIST *ResourceList)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return STATUS_SUCCESS;
+}
+
+/*
+ * @unimplemented
+ */
+NTSTATUS
+NTAPI
+HalAssignSlotResources(IN PUNICODE_STRING RegistryPath,
+ IN PUNICODE_STRING DriverClassName,
+ IN PDRIVER_OBJECT DriverObject,
+ IN PDEVICE_OBJECT DeviceObject,
+ IN INTERFACE_TYPE BusType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN OUT PCM_RESOURCE_LIST *AllocatedResources)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return STATUS_SUCCESS;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalGetBusData(IN BUS_DATA_TYPE BusDataType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalGetBusDataByOffset(IN BUS_DATA_TYPE BusDataType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PVOID Buffer,
+ IN ULONG Offset,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalGetInterruptVector(IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN ULONG BusInterruptLevel,
+ IN ULONG BusInterruptVector,
+ OUT PKIRQL Irql,
+ OUT PKAFFINITY Affinity)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalSetBusData(IN BUS_DATA_TYPE BusDataType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PVOID Buffer,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalSetBusDataByOffset(IN BUS_DATA_TYPE BusDataType,
+ IN ULONG BusNumber,
+ IN ULONG SlotNumber,
+ IN PVOID Buffer,
+ IN ULONG Offset,
+ IN ULONG Length)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+BOOLEAN
+NTAPI
+HalTranslateBusAddress(IN INTERFACE_TYPE InterfaceType,
+ IN ULONG BusNumber,
+ IN PHYSICAL_ADDRESS BusAddress,
+ IN OUT PULONG AddressSpace,
+ OUT PPHYSICAL_ADDRESS TranslatedAddress)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/bus.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/cache.S
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/cache.S…
==============================================================================
--- trunk/reactos/hal/halarm/generic/cache.S (added)
+++ trunk/reactos/hal/halarm/generic/cache.S [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,57 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: GPL - See COPYING in the top level directory
+ * FILE: hal/halarm/generic/cache.s
+ * PURPOSE: Implements cache clean, invalidate routines for ARM machines
+ * PROGRAMMERS: Copyright (C) 2005 ARM Ltd.
+ */
+
+ .title "ARM HAL Cache Routines"
+ .include "ntoskrnl/include/internal/arm/kxarm.h"
+ .include "ntoskrnl/include/internal/arm/ksarm.h"
+
+ NESTED_ENTRY v7_flush_dcache_all
+ PROLOG_END v7_flush_dcache_all
+
+ mrc p15, 1, r0, c0, c0, 1 // read clidr
+ ands r3, r0, #0x7000000 // extract loc from clidr
+ mov r3, r3, lsr #23 // left align loc bit field
+ beq finished // if loc is 0, then no need to clean
+ mov r10, #0 // start clean at cache level 0
+loop1:
+ add r2, r10, r10, lsr #1 // work out 3x current cache level
+ mov r1, r0, lsr r2 // extract cache type bits from clidr
+ and r1, r1, #7 // mask of the bits for current cache only
+ cmp r1, #2 // see what cache we have at this level
+ blt skip // skip if no cache, or just i-cache
+ mcr p15, 2, r10, c0, c0, 0 // select current cache level in cssr
+ isb // isb to sych the new cssr&csidr
+ mrc p15, 1, r1, c0, c0, 0 // read the new csidr
+ and r2, r1, #7 // extract the length of the cache lines
+ add r2, r2, #4 // add 4 (line length offset)
+ ldr r4, =0x3ff
+ ands r4, r4, r1, lsr #3 // find maximum number on the way size
+ clz r5, r4 // find bit position of way size increment
+ ldr r7, =0x7fff
+ ands r7, r7, r1, lsr #13 // extract max number of the index size
+loop2:
+ mov r9, r4 // create working copy of max way size
+loop3:
+ orr r11, r10, r9, lsl r5 // factor way and cache number into r11
+ orr r11, r11, r7, lsl r2 // factor index number into r11
+ mcr p15, 0, r11, c7, c14, 2 // clean & invalidate by set/way
+ subs r9, r9, #1 // decrement the way
+ bge loop3
+ subs r7, r7, #1 // decrement the index
+ bge loop2
+skip:
+ add r10, r10, #2 // increment cache number
+ cmp r3, r10
+ bgt loop1
+finished:
+ mov r10, #0 // swith back to cache level 0
+ mcr p15, 2, r10, c0, c0, 0 // select current cache level in cssr
+ isb
+ mov pc, lr
+
+ ENTRY_END v7_flush_dcache_all
Propchange: trunk/reactos/hal/halarm/generic/cache.S
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/display.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/display…
==============================================================================
--- trunk/reactos/hal/halarm/generic/display.c (added)
+++ trunk/reactos/hal/halarm/generic/display.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,64 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/display.c
+ * PURPOSE: Screen Display Routines, now useless since NT 5.1+
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+#include <ndk/inbvfuncs.h>
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalAcquireDisplayOwnership(IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters)
+{
+ /* Stub since Windows XP implemented Inbv */
+ return;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalDisplayString(IN PCH String)
+{
+ /* Call the Inbv driver */
+ InbvDisplayString(String);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalQueryDisplayParameters(OUT PULONG DispSizeX,
+ OUT PULONG DispSizeY,
+ OUT PULONG CursorPosX,
+ OUT PULONG CursorPosY)
+{
+ /* Stub since Windows XP implemented Inbv */
+ return;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalSetDisplayParameters(IN ULONG CursorPosX,
+ IN ULONG CursorPosY)
+{
+ /* Stub since Windows XP implemented Inbv */
+ return;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/display.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/dma.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/dma.c?r…
==============================================================================
--- trunk/reactos/hal/halarm/generic/dma.c (added)
+++ trunk/reactos/hal/halarm/generic/dma.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,188 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/dma.c
+ * PURPOSE: DMA Support
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+/*
+ * @unimplemented
+ */
+PADAPTER_OBJECT
+NTAPI
+HalGetAdapter(IN PDEVICE_DESCRIPTION DeviceDescription,
+ OUT PULONG NumberOfMapRegisters)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalPutDmaAdapter(IN PADAPTER_OBJECT AdapterObject)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+NTAPI
+HalAllocateCommonBuffer(IN PADAPTER_OBJECT AdapterObject,
+ IN ULONG Length,
+ IN PPHYSICAL_ADDRESS LogicalAddress,
+ IN BOOLEAN CacheEnabled)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return NULL;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalFreeCommonBuffer(IN PADAPTER_OBJECT AdapterObject,
+ IN ULONG Length,
+ IN PHYSICAL_ADDRESS LogicalAddress,
+ IN PVOID VirtualAddress,
+ IN BOOLEAN CacheEnabled)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @unimplemented
+ */
+ULONG
+NTAPI
+HalReadDmaCounter(IN PADAPTER_OBJECT AdapterObject)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @unimplemented
+ */
+NTSTATUS
+NTAPI
+HalAllocateAdapterChannel(IN PADAPTER_OBJECT AdapterObject,
+ IN PWAIT_CONTEXT_BLOCK WaitContextBlock,
+ IN ULONG NumberOfMapRegisters,
+ IN PDRIVER_CONTROL ExecutionRoutine)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return STATUS_SUCCESS;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+IoFreeAdapterChannel(IN PADAPTER_OBJECT AdapterObject)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+IoFreeMapRegisters(IN PADAPTER_OBJECT AdapterObject,
+ IN PVOID MapRegisterBase,
+ IN ULONG NumberOfMapRegisters)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @unimplemented
+ */
+BOOLEAN
+NTAPI
+IoFlushAdapterBuffers(IN PADAPTER_OBJECT AdapterObject,
+ IN PMDL Mdl,
+ IN PVOID MapRegisterBase,
+ IN PVOID CurrentVa,
+ IN ULONG Length,
+ IN BOOLEAN WriteToDevice)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+PHYSICAL_ADDRESS
+NTAPI
+IoMapTransfer(IN PADAPTER_OBJECT AdapterObject,
+ IN PMDL Mdl,
+ IN PVOID MapRegisterBase,
+ IN PVOID CurrentVa,
+ IN OUT PULONG Length,
+ IN BOOLEAN WriteToDevice)
+{
+ PHYSICAL_ADDRESS Address;
+
+ UNIMPLEMENTED;
+ while (TRUE);
+
+ Address.QuadPart = 0;
+ return Address;
+}
+
+/*
+ * @unimplemented
+ */
+BOOLEAN
+NTAPI
+HalFlushCommonBuffer(IN PADAPTER_OBJECT AdapterObject,
+ IN ULONG Length,
+ IN PHYSICAL_ADDRESS LogicalAddress,
+ IN PVOID VirtualAddress)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return FALSE;
+}
+
+/*
+ * @unimplemented
+ */
+PVOID
+NTAPI
+HalAllocateCrashDumpRegisters(IN PADAPTER_OBJECT AdapterObject,
+ IN OUT PULONG NumberOfMapRegisters)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return NULL;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/dma.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/drive.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/drive.c…
==============================================================================
--- trunk/reactos/hal/halarm/generic/drive.c (added)
+++ trunk/reactos/hal/halarm/generic/drive.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,75 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/drive.c
+ * PURPOSE: HAL Stubs for Disk I/O Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS *****************************************************************/
+
+VOID
+NTAPI
+HalpAssignDriveLetters(IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
+ IN PSTRING NtDeviceName,
+ OUT PUCHAR NtSystemPath,
+ OUT PSTRING NtSystemPathString)
+{
+ /* Call the kernel */
+ IoAssignDriveLetters(LoaderBlock,
+ NtDeviceName,
+ NtSystemPath,
+ NtSystemPathString);
+}
+
+NTSTATUS
+NTAPI
+HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN BOOLEAN ReturnRecognizedPartitions,
+ IN OUT PDRIVE_LAYOUT_INFORMATION *PartitionBuffer)
+{
+ /* Call the kernel */
+ return IoReadPartitionTable(DeviceObject,
+ SectorSize,
+ ReturnRecognizedPartitions,
+ PartitionBuffer);
+}
+
+NTSTATUS
+NTAPI
+HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG SectorsPerTrack,
+ IN ULONG NumberOfHeads,
+ IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer)
+{
+ /* Call the kernel */
+ return IoWritePartitionTable(DeviceObject,
+ SectorSize,
+ SectorsPerTrack,
+ NumberOfHeads,
+ PartitionBuffer);
+}
+
+NTSTATUS
+NTAPI
+HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
+ IN ULONG SectorSize,
+ IN ULONG PartitionNumber,
+ IN ULONG PartitionType)
+{
+ /* Call the kernel */
+ return IoSetPartitionInformation(DeviceObject,
+ SectorSize,
+ PartitionNumber,
+ PartitionType);
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/drive.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/fmutex.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/fmutex.…
==============================================================================
--- trunk/reactos/hal/halarm/generic/fmutex.c (added)
+++ trunk/reactos/hal/halarm/generic/fmutex.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,46 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/fmutex.c
+ * PURPOSE: Fast Mutex Support
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+#undef ExAcquireFastMutex
+#undef ExReleaseFastMutex
+#undef ExTryToAcquireFastMutex
+
+/* FUNCTIONS ******************************************************************/
+
+VOID
+FASTCALL
+ExAcquireFastMutex(IN PFAST_MUTEX FastMutex)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+FASTCALL
+ExReleaseFastMutex(IN PFAST_MUTEX FastMutex)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+BOOLEAN
+FASTCALL
+ExTryToAcquireFastMutex(IN PFAST_MUTEX FastMutex)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return TRUE;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/fmutex.c
------------------------------------------------------------------------------
svn:eol-style = native
Removed: trunk/reactos/hal/halarm/generic/generic.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/generic…
==============================================================================
--- trunk/reactos/hal/halarm/generic/generic.rbuild [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/generic/generic.rbuild (removed)
@@ -1,9 +1,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
-<module name="halarm_generic" type="objectlibrary">
- <include base="halarm_generic">../include</include>
- <include base="ntoskrnl">include</include>
- <define name="_NTHAL_" />
- <file>hal.c</file>
- <pch>../include/hal.h</pch>
-</module>
Removed: trunk/reactos/hal/halarm/generic/hal.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/hal.c?r…
==============================================================================
--- trunk/reactos/hal/halarm/generic/hal.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/generic/hal.c (removed)
@@ -1,1540 +1,0 @@
-/*
- * PROJECT: ReactOS HAL
- * LICENSE: BSD - See COPYING.ARM in the top level directory
- * FILE: hal/halarm/generic/hal.c
- * PURPOSE: Hardware Abstraction Layer
- * PROGRAMMERS: ReactOS Portable Systems Group
- */
-
-/* INCLUDES *******************************************************************/
-
-#include <hal.h>
-#define NDEBUG
-#include <debug.h>
-#include <ndk/inbvfuncs.h>
-
-#undef ExAcquireFastMutex
-#undef ExReleaseFastMutex
-#undef ExTryToAcquireFastMutex
-#undef KeAcquireSpinLock
-#undef KeLowerIrql
-#undef KeRaiseIrql
-#undef KeReleaseSpinLock
-
-#define READ_REGISTER_ULONG(r) (*((volatile ULONG * const)(r)))
-#define WRITE_REGISTER_ULONG(r, v) (*((volatile ULONG *)(r)) = (v))
-
-VOID
-FASTCALL
-KeUpdateSystemTime(
- IN PKTRAP_FRAME TrapFrame,
- IN ULONG Increment,
- IN KIRQL OldIrql
-);
-
-/* DATA **********************************************************************/
-
-ULONG HalpCurrentTimeIncrement, HalpNextTimeIncrement, HalpNextIntervalCount;
-PUCHAR KdComPortInUse;
-
-ULONG HalpIrqlTable[HIGH_LEVEL + 1] =
-{
- 0xFFFFFFFF, // IRQL 0 PASSIVE_LEVEL
- 0xFFFFFFFD, // IRQL 1 APC_LEVEL
- 0xFFFFFFF9, // IRQL 2 DISPATCH_LEVEL
- 0xFFFFFFD9, // IRQL 3
- 0xFFFFFF99, // IRQL 4
- 0xFFFFFF19, // IRQL 5
- 0xFFFFFE19, // IRQL 6
- 0xFFFFFC19, // IRQL 7
- 0xFFFFF819, // IRQL 8
- 0xFFFFF019, // IRQL 9
- 0xFFFFE019, // IRQL 10
- 0xFFFFC019, // IRQL 11
- 0xFFFF8019, // IRQL 12
- 0xFFFF0019, // IRQL 13
- 0xFFFE0019, // IRQL 14
- 0xFFFC0019, // IRQL 15
- 0xFFF80019, // IRQL 16
- 0xFFF00019, // IRQL 17
- 0xFFE00019, // IRQL 18
- 0xFFC00019, // IRQL 19
- 0xFF800019, // IRQL 20
- 0xFF000019, // IRQL 21
- 0xFE000019, // IRQL 22
- 0xFC000019, // IRQL 23
- 0xF0000019, // IRQL 24
- 0x80000019, // IRQL 25
- 0x19, // IRQL 26
- 0x18, // IRQL 27 PROFILE_LEVEL
- 0x10, // IRQL 28 CLOCK2_LEVEL
- 0x00, // IRQL 29 IPI_LEVEL
- 0x00, // IRQL 30 POWER_LEVEL
- 0x00, // IRQL 31 HIGH_LEVEL
-};
-
-UCHAR HalpMaskTable[HIGH_LEVEL + 1] =
-{
- PROFILE_LEVEL, // INT 0 WATCHDOG
- APC_LEVEL, // INT 1 SOFTWARE INTERRUPT
- DISPATCH_LEVEL,// INT 2 COMM RX
- IPI_LEVEL, // INT 3 COMM TX
- CLOCK2_LEVEL, // INT 4 TIMER 0
- 3,
- 4,
- 5,
- 6,
- 7,
- 8,
- 9,
- 10,
- 11,
- 12,
- 13,
- 14,
- 15,
- 16,
- 17,
- 18,
- 19,
- 20,
- 21,
- 22,
- 23,
- 24,
- 25,
- 26,
- 26,
- 26
-};
-
-/* FUNCTIONS *****************************************************************/
-
-NTSTATUS
-NTAPI
-DriverEntry(
- PDRIVER_OBJECT DriverObject,
- PUNICODE_STRING RegistryPath)
-{
- UNIMPLEMENTED;
-
- return STATUS_SUCCESS;
-}
-
-/*
-* @unimplemented
-*/
-VOID
-NTAPI
-HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
-{
- UNIMPLEMENTED;
- return;
-}
-
-/*
-* @unimplemented
-*/
-VOID
-NTAPI
-HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
-{
- UNIMPLEMENTED;
- return;
-}
-
-/*
-* @unimplemented
-*/
-ULONG_PTR
-NTAPI
-HalSetProfileInterval(IN ULONG_PTR Interval)
-{
- UNIMPLEMENTED;
- return Interval;
-}
-
-VOID
-FASTCALL
-ExAcquireFastMutex(
- PFAST_MUTEX FastMutex)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-FASTCALL
-ExReleaseFastMutex(
- PFAST_MUTEX FastMutex)
-{
- UNIMPLEMENTED;
-}
-
-
-BOOLEAN FASTCALL
-ExTryToAcquireFastMutex(
- PFAST_MUTEX FastMutex)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-NTSTATUS
-NTAPI
-HalAdjustResourceList(
- PCM_RESOURCE_LIST Resources)
-{
- UNIMPLEMENTED;
-
- return STATUS_SUCCESS;
-}
-
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-HalAllProcessorsStarted(VOID)
-{
- /* Do nothing */
- return TRUE;
-}
-
-
-NTSTATUS
-NTAPI
-HalAllocateAdapterChannel(
- PADAPTER_OBJECT AdapterObject,
- PWAIT_CONTEXT_BLOCK WaitContextBlock,
- ULONG NumberOfMapRegisters,
- PDRIVER_CONTROL ExecutionRoutine)
-{
- UNIMPLEMENTED;
-
- return STATUS_SUCCESS;
-}
-
-
-PVOID
-NTAPI
-HalAllocateCommonBuffer(
- PADAPTER_OBJECT AdapterObject,
- ULONG Length,
- PPHYSICAL_ADDRESS LogicalAddress,
- BOOLEAN CacheEnabled)
-{
- UNIMPLEMENTED;
-
- return NULL;
-}
-
-
-PVOID
-NTAPI
-HalAllocateCrashDumpRegisters(
- PADAPTER_OBJECT AdapterObject,
- PULONG NumberOfMapRegisters)
-{
- UNIMPLEMENTED;
- return NULL;
-}
-
-
-NTSTATUS
-NTAPI
-HalAssignSlotResources(
- PUNICODE_STRING RegistryPath,
- PUNICODE_STRING DriverClassName,
- PDRIVER_OBJECT DriverObject,
- PDEVICE_OBJECT DeviceObject,
- INTERFACE_TYPE BusType,
- ULONG BusNumber,
- ULONG SlotNumber,
- PCM_RESOURCE_LIST *AllocatedResources)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-BOOLEAN
-NTAPI
-HalBeginSystemInterrupt(IN KIRQL Irql,
- IN UCHAR Vector,
- OUT PKIRQL OldIrql)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalCalibratePerformanceCounter(
- volatile LONG *Count,
- ULONGLONG NewCount)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-HalDisableSystemInterrupt(IN UCHAR Vector,
- IN KIRQL Irql)
-{
- UNIMPLEMENTED;
-}
-
-VOID
-NTAPI
-HalAcquireDisplayOwnership(IN PHAL_RESET_DISPLAY_PARAMETERS ResetDisplayParameters)
-{
- //
- // Stub since Windows XP implemented Inbv
- //
- return;
-}
-
-VOID
-NTAPI
-HalDisplayString(IN PCH String)
-{
- //
- // Call the Inbv driver
- //
- InbvDisplayString(String);
-}
-
-VOID
-NTAPI
-HalQueryDisplayParameters(OUT PULONG DispSizeX,
- OUT PULONG DispSizeY,
- OUT PULONG CursorPosX,
- OUT PULONG CursorPosY)
-{
- //
- // Stub since Windows XP implemented Inbv
- //
- return;
-}
-
-VOID
-NTAPI
-HalSetDisplayParameters(IN ULONG CursorPosX,
- IN ULONG CursorPosY)
-{
- //
- // Stub since Windows XP implemented Inbv
- //
- return;
-}
-
-BOOLEAN
-NTAPI
-HalEnableSystemInterrupt(IN UCHAR Vector,
- IN KIRQL Irql,
- IN KINTERRUPT_MODE InterruptMode)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalEndSystemInterrupt(IN KIRQL OldIrql,
- IN PKTRAP_FRAME TrapFrame)
-{
- UNIMPLEMENTED;
-}
-
-
-BOOLEAN
-NTAPI
-HalFlushCommonBuffer(
- ULONG Unknown1,
- ULONG Unknown2,
- ULONG Unknown3,
- ULONG Unknown4,
- ULONG Unknown5)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalFreeCommonBuffer(
- PADAPTER_OBJECT AdapterObject,
- ULONG Length,
- PHYSICAL_ADDRESS LogicalAddress,
- PVOID VirtualAddress,
- BOOLEAN CacheEnabled)
-{
- UNIMPLEMENTED;
-}
-
-
-PADAPTER_OBJECT
-NTAPI
-HalGetAdapter(
- PDEVICE_DESCRIPTION DeviceDescription,
- PULONG NumberOfMapRegisters)
-{
- UNIMPLEMENTED;
-
- return (PADAPTER_OBJECT)NULL;
-}
-
-
-ULONG
-NTAPI
-HalGetBusData(
- BUS_DATA_TYPE BusDataType,
- ULONG BusNumber,
- ULONG SlotNumber,
- PVOID Buffer,
- ULONG Length)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-ULONG
-NTAPI
-HalGetBusDataByOffset(
- BUS_DATA_TYPE BusDataType,
- ULONG BusNumber,
- ULONG SlotNumber,
- PVOID Buffer,
- ULONG Offset,
- ULONG Length)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-ARC_STATUS
-NTAPI
-HalGetEnvironmentVariable(
- PCH Name,
- USHORT ValueLength,
- PCH Value)
-{
- UNIMPLEMENTED;
-
- return ENOENT;
-}
-
-
-ULONG
-NTAPI
-HalGetInterruptVector(
- INTERFACE_TYPE InterfaceType,
- ULONG BusNumber,
- ULONG BusInterruptLevel,
- ULONG BusInterruptVector,
- PKIRQL Irql,
- PKAFFINITY Affinity)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-VOID
-NTAPI
-HalHandleNMI(
- PVOID NmiData)
-{
- UNIMPLEMENTED;
-}
-
-VOID
-NTAPI
-HalpGetParameters(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
- PCHAR CommandLine;
-
- /* Make sure we have a loader block and command line */
- if ((LoaderBlock) && (LoaderBlock->LoadOptions))
- {
- /* Read the command line */
- CommandLine = LoaderBlock->LoadOptions;
-
- /* Check for initial breakpoint */
- if (strstr(CommandLine, "BREAK")) DbgBreakPoint();
- }
-}
-
-ULONG
-HalGetInterruptSource(VOID)
-{
- ULONG InterruptStatus;
-
- //
- // Get the interrupt status, and return the highest bit set
- //
- InterruptStatus = READ_REGISTER_ULONG(VIC_INT_STATUS);
- return 31 - _clz(InterruptStatus);
-}
-
-VOID
-HalpClockInterrupt(VOID)
-{
- //
- // Clear the interrupt
- //
- ASSERT(KeGetCurrentIrql() == CLOCK2_LEVEL);
- WRITE_REGISTER_ULONG(TIMER0_INT_CLEAR, 1);
-
- //
- // FIXME: Update HAL Perf counters
- //
-
- //
- // FIXME: Check if someone changed the clockrate
- //
-
- //
- // Call the kernel
- //
- KeUpdateSystemTime(KeGetCurrentThread()->TrapFrame,
- CLOCK2_LEVEL,
- HalpCurrentTimeIncrement);
-
- //
- // We're done
- //
-}
-
-VOID
-HalpStallInterrupt(VOID)
-{
- //
- // Clear the interrupt
- //
- WRITE_REGISTER_ULONG(TIMER0_INT_CLEAR, 1);
-}
-
-VOID
-HalpInitializeInterrupts(VOID)
-{
- PKPCR Pcr = (PKPCR)KeGetPcr();
- ULONG ClockInterval;
- SP804_CONTROL_REGISTER ControlRegister;
-
- //
- // Fill out the IRQL mappings
- //
- RtlCopyMemory(Pcr->IrqlTable, HalpIrqlTable, sizeof(Pcr->IrqlTable));
- RtlCopyMemory(Pcr->IrqlMask, HalpMaskTable, sizeof(Pcr->IrqlMask));
-
- //
- // Setup the clock and profile interrupt
- //
- Pcr->InterruptRoutine[CLOCK2_LEVEL] = HalpStallInterrupt;
-
- //
- // Configure the interval to 10ms
- // (INTERVAL (10ms) * TIMCLKfreq (1MHz))
- // --------------------------------------- == 10^4
- // (TIMCLKENXdiv (1) * PRESCALEdiv (1))
- //
- ClockInterval = 0x2710;
-
- //
- // Configure the timer
- //
- ControlRegister.AsUlong = 0;
- ControlRegister.Wide = TRUE;
- ControlRegister.Periodic = TRUE;
- ControlRegister.Interrupt = TRUE;
- ControlRegister.Enabled = TRUE;
-
- //
- // Enable the timer
- //
- WRITE_REGISTER_ULONG(TIMER0_LOAD, ClockInterval);
- WRITE_REGISTER_ULONG(TIMER0_CONTROL, ControlRegister.AsUlong);
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-NTAPI
-HalInitSystem(IN ULONG BootPhase,
- IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
- PKPRCB Prcb = KeGetCurrentPrcb();
-
- //
- // Check the boot phase
- //
- if (!BootPhase)
- {
- //
- // Get command-line parameters
- //
- HalpGetParameters(LoaderBlock);
-
-#if DBG
- //
- // Checked HAL requires checked kernel
- //
- if (!(Prcb->BuildType & PRCB_BUILD_DEBUG))
- {
- //
- // No match, bugcheck
- //
- KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 1, 0);
- }
-#else
- //
- // Release build requires release HAL
- //
- if (Prcb->BuildType & PRCB_BUILD_DEBUG)
- {
- //
- // No match, bugcheck
- //
- KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 0, 0);
- }
-#endif
-
-#ifdef CONFIG_SMP
- //
- // SMP HAL requires SMP kernel
- //
- if (Prcb->BuildType & PRCB_BUILD_UNIPROCESSOR)
- {
- //
- // No match, bugcheck
- //
- KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 0, 0);
- }
-#endif
-
- //
- // Validate the PRCB
- //
- if (Prcb->MajorVersion != PRCB_MAJOR_VERSION)
- {
- //
- // Validation failed, bugcheck
- //
- KeBugCheckEx(MISMATCHED_HAL, 1, Prcb->MajorVersion, 1, 0);
- }
-
- //
- // Setup time increments to 10ms and 1ms
- //
- HalpCurrentTimeIncrement = 100000;
- HalpNextTimeIncrement = 100000;
- HalpNextIntervalCount = 0;
- KeSetTimeIncrement(100000, 10000);
-
- //
- // Initialize interrupts
- //
- HalpInitializeInterrupts();
- }
- else if (BootPhase == 1)
- {
- //
- // Switch to real clock interrupt
- //
- PCR->InterruptRoutine[CLOCK2_LEVEL] = HalpClockInterrupt;
- }
-
- //
- // All done, return
- //
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalInitializeProcessor(IN ULONG ProcessorNumber,
- IN PLOADER_PARAMETER_BLOCK LoaderBlock)
-{
- //
- // Nothing to do
- //
- return;
-}
-
-
-BOOLEAN
-NTAPI
-HalMakeBeep(
- ULONG Frequency)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalProcessorIdle(VOID)
-{
- UNIMPLEMENTED;
-}
-
-
-#define RTC_DATA (PVOID)0xE00E8000
-
-BOOLEAN
-NTAPI
-HalQueryRealTimeClock(IN PTIME_FIELDS Time)
-{
- LARGE_INTEGER LargeTime;
- ULONG Seconds;
-
- //
- // Query the RTC value
- //
- Seconds = READ_REGISTER_ULONG(RTC_DATA);
-
- //
- // Convert to time
- //
- RtlSecondsSince1970ToTime(Seconds, &LargeTime);
-
- //
- // Convert to time-fields
- //
- RtlTimeToTimeFields(&LargeTime, Time);
- return TRUE;
-}
-
-ULONG
-NTAPI
-HalReadDmaCounter(
- PADAPTER_OBJECT AdapterObject)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-VOID
-NTAPI
-HalReportResourceUsage(VOID)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-HalRequestIpi(
- ULONG Unknown)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-FASTCALL
-HalRequestSoftwareInterrupt(IN KIRQL Request)
-{
- //
- // Force a software interrupt
- //
- WRITE_REGISTER_ULONG(VIC_SOFT_INT, 1 << Request);
-}
-
-VOID
-FASTCALL
-HalClearSoftwareInterrupt(IN KIRQL Request)
-{
- //
- // Clear a software interrupt
- //
- WRITE_REGISTER_ULONG(VIC_SOFT_INT_CLEAR, 1 << Request);
-}
-
-VOID
-NTAPI
-HalReturnToFirmware(
- FIRMWARE_REENTRY Action)
-{
- UNIMPLEMENTED;
-}
-
-
-ULONG
-NTAPI
-HalSetBusData(
- BUS_DATA_TYPE BusDataType,
- ULONG BusNumber,
- ULONG SlotNumber,
- PVOID Buffer,
- ULONG Length)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-ULONG
-NTAPI
-HalSetBusDataByOffset(
- BUS_DATA_TYPE BusDataType,
- ULONG BusNumber,
- ULONG SlotNumber,
- PVOID Buffer,
- ULONG Offset,
- ULONG Length)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-ARC_STATUS
-NTAPI
-HalSetEnvironmentVariable(
- PCH Name,
- PCH Value)
-{
- UNIMPLEMENTED;
-
- return ESUCCESS;
-}
-
-
-BOOLEAN
-NTAPI
-HalSetRealTimeClock(
- PTIME_FIELDS Time)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-ULONG
-NTAPI
-HalSetTimeIncrement(
- ULONG Increment)
-{
- UNIMPLEMENTED;
-
- return Increment;
-}
-
-
-BOOLEAN
-NTAPI
-HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
- IN PKPROCESSOR_STATE ProcessorState)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-UCHAR
-FASTCALL
-HalSystemVectorDispatchEntry(IN ULONG Vector,
- OUT PKINTERRUPT_ROUTINE **FlatDispatch,
- OUT PKINTERRUPT_ROUTINE *NoConnection)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-BOOLEAN
-NTAPI
-HalTranslateBusAddress(
- INTERFACE_TYPE InterfaceType,
- ULONG BusNumber,
- PHYSICAL_ADDRESS BusAddress,
- PULONG AddressSpace,
- PPHYSICAL_ADDRESS TranslatedAddress)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-HalpAssignDriveLetters(IN struct _LOADER_PARAMETER_BLOCK *LoaderBlock,
- IN PSTRING NtDeviceName,
- OUT PUCHAR NtSystemPath,
- OUT PSTRING NtSystemPathString)
-{
- /* Call the kernel */
- IoAssignDriveLetters(LoaderBlock,
- NtDeviceName,
- NtSystemPath,
- NtSystemPathString);
-}
-
-NTSTATUS
-NTAPI
-HalpReadPartitionTable(IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN BOOLEAN ReturnRecognizedPartitions,
- IN OUT PDRIVE_LAYOUT_INFORMATION *PartitionBuffer)
-{
- /* Call the kernel */
- return IoReadPartitionTable(DeviceObject,
- SectorSize,
- ReturnRecognizedPartitions,
- PartitionBuffer);
-}
-
-NTSTATUS
-NTAPI
-HalpWritePartitionTable(IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG SectorsPerTrack,
- IN ULONG NumberOfHeads,
- IN PDRIVE_LAYOUT_INFORMATION PartitionBuffer)
-{
- /* Call the kernel */
- return IoWritePartitionTable(DeviceObject,
- SectorSize,
- SectorsPerTrack,
- NumberOfHeads,
- PartitionBuffer);
-}
-
-NTSTATUS
-NTAPI
-HalpSetPartitionInformation(IN PDEVICE_OBJECT DeviceObject,
- IN ULONG SectorSize,
- IN ULONG PartitionNumber,
- IN ULONG PartitionType)
-{
- /* Call the kernel */
- return IoSetPartitionInformation(DeviceObject,
- SectorSize,
- PartitionNumber,
- PartitionType);
-}
-
-
-BOOLEAN
-NTAPI
-IoFlushAdapterBuffers(
- PADAPTER_OBJECT AdapterObject,
- PMDL Mdl,
- PVOID MapRegisterBase,
- PVOID CurrentVa,
- ULONG Length,
- BOOLEAN WriteToDevice)
-{
- UNIMPLEMENTED;
-
- return TRUE;
-}
-
-
-VOID
-NTAPI
-IoFreeAdapterChannel(
- PADAPTER_OBJECT AdapterObject)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-IoFreeMapRegisters(
- PADAPTER_OBJECT AdapterObject,
- PVOID MapRegisterBase,
- ULONG NumberOfMapRegisters)
-{
- UNIMPLEMENTED;
-}
-
-
-PHYSICAL_ADDRESS
-NTAPI
-IoMapTransfer(
- PADAPTER_OBJECT AdapterObject,
- PMDL Mdl,
- PVOID MapRegisterBase,
- PVOID CurrentVa,
- PULONG Length,
- BOOLEAN WriteToDevice)
-{
- PHYSICAL_ADDRESS Address;
-
- UNIMPLEMENTED;
-
- Address.QuadPart = 0;
-
- return Address;
-}
-
-VOID
-NTAPI
-KeFlushWriteBuffer(VOID)
-{
- UNIMPLEMENTED;
-}
-
-LARGE_INTEGER
-NTAPI
-KeQueryPerformanceCounter(
- PLARGE_INTEGER PerformanceFreq)
-{
- LARGE_INTEGER Value;
-
- UNIMPLEMENTED;
-
- Value.QuadPart = 0;
-
- return Value;
-}
-
-VOID
-NTAPI
-KeStallExecutionProcessor(IN ULONG Microseconds)
-{
- SP804_CONTROL_REGISTER ControlRegister;
-
- //
- // Enable the timer
- //
- WRITE_REGISTER_ULONG(TIMER1_LOAD, Microseconds);
-
- //
- // Configure the timer
- //
- ControlRegister.AsUlong = 0;
- ControlRegister.OneShot = TRUE;
- ControlRegister.Wide = TRUE;
- ControlRegister.Periodic = TRUE;
- ControlRegister.Enabled = TRUE;
- WRITE_REGISTER_ULONG(TIMER1_CONTROL, ControlRegister.AsUlong);
-
- //
- // Now we will loop until the timer reached 0
- //
- while (READ_REGISTER_ULONG(TIMER1_VALUE));
-}
-
-VOID
-FASTCALL
-KfLowerIrql(IN KIRQL NewIrql)
-{
- ULONG InterruptMask;
- ARM_STATUS_REGISTER Flags;
- PKPCR Pcr = (PKPCR)KeGetPcr();
-
- //
- // Validate the new IRQL
- //
- Flags = KeArmStatusRegisterGet();
- _disable();
- ASSERT(NewIrql <= Pcr->CurrentIrql);
-
- //
- // IRQLs are internally 8 bits
- //
- NewIrql &= 0xFF;
-
- //
- // Setup the interrupt mask for this IRQL
- //
- InterruptMask = KeGetPcr()->IrqlTable[NewIrql];
-// DPRINT1("[LOWER] IRQL: %d InterruptMask: %lx\n", NewIrql,
InterruptMask);
-
- //
- // Clear interrupts associated to the old IRQL
- //
- WRITE_REGISTER_ULONG(VIC_INT_CLEAR, 0xFFFFFFFF);
-
- //
- // Set the new interrupt mask
- // PL190 VIC support only for now
- //
- WRITE_REGISTER_ULONG(VIC_INT_ENABLE, InterruptMask);
-
- //
- // Save the new IRQL
- //
- Pcr->CurrentIrql = NewIrql;
- if (!Flags.IrqDisable) _enable();
-}
-
-KIRQL
-FASTCALL
-KfRaiseIrql(IN KIRQL NewIrql)
-{
- KIRQL OldIrql;
- ULONG InterruptMask;
- ARM_STATUS_REGISTER Flags;
- PKPCR Pcr = (PKPCR)KeGetPcr();
-
- //
- // Save the current IRQL
- //
- Flags = KeArmStatusRegisterGet();
- _disable();
- OldIrql = Pcr->CurrentIrql;
-
- //
- // IRQLs are internally 8 bits
- //
- NewIrql &= 0xFF;
-
- //
- // Setup the interrupt mask for this IRQL
- //
- InterruptMask = KeGetPcr()->IrqlTable[NewIrql];
- // DPRINT1("[RAISE] IRQL: %d InterruptMask: %lx\n", NewIrql,
InterruptMask);
- ASSERT(NewIrql >= OldIrql);
-
- //
- // Clear interrupts associated to the old IRQL
- //
- WRITE_REGISTER_ULONG(VIC_INT_CLEAR, 0xFFFFFFFF);
-
- //
- // Set the new interrupt mask
- // PL190 VIC support only for now
- //
- WRITE_REGISTER_ULONG(VIC_INT_ENABLE, InterruptMask);
-
- //
- // Save the new IRQL
- //
- Pcr->CurrentIrql = NewIrql;
- if (!Flags.IrqDisable) _enable();
- return OldIrql;
-}
-
-VOID
-NTAPI
-READ_PORT_BUFFER_UCHAR(
- PUCHAR Port,
- PUCHAR Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-READ_PORT_BUFFER_ULONG(
- PULONG Port,
- PULONG Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-READ_PORT_BUFFER_USHORT(
- PUSHORT Port,
- PUSHORT Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-UCHAR
-NTAPI
-READ_PORT_UCHAR(
- PUCHAR Port)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-ULONG
-NTAPI
-READ_PORT_ULONG(
- PULONG Port)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-USHORT
-NTAPI
-READ_PORT_USHORT(
- PUSHORT Port)
-{
- UNIMPLEMENTED;
-
- return 0;
-}
-
-
-VOID
-NTAPI
-WRITE_PORT_BUFFER_UCHAR(
- PUCHAR Port,
- PUCHAR Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-WRITE_PORT_BUFFER_USHORT(
- PUSHORT Port,
- PUSHORT Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-WRITE_PORT_BUFFER_ULONG(
- PULONG Port,
- PULONG Buffer,
- ULONG Count)
-{
- UNIMPLEMENTED;
-}
-
-
-VOID
-NTAPI
-WRITE_PORT_UCHAR(
- PUCHAR Port,
- UCHAR Value)
-{
- UNIMPLEMENTED;
-}
-
-VOID
-NTAPI
-WRITE_PORT_ULONG(
- PULONG Port,
- ULONG Value)
-{
- UNIMPLEMENTED;
-}
-
-VOID
-NTAPI
-WRITE_PORT_USHORT(
- PUSHORT Port,
- USHORT Value)
-{
- UNIMPLEMENTED;
-}
-
-KIRQL
-KeRaiseIrqlToDpcLevel(VOID)
-{
- //
- // Call the generic routine
- //
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-KIRQL
-KeRaiseIrqlToSynchLevel(VOID)
-{
- //
- // Call the generic routine
- //
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-BOOLEAN HalpProcessorIdentified;
-BOOLEAN HalpTestCleanSupported;
-
-VOID
-HalpIdentifyProcessor(VOID)
-{
- ARM_ID_CODE_REGISTER IdRegister;
-
- //
- // Don't do it again
- //
- HalpProcessorIdentified = TRUE;
-
- //
- // Read the ID Code
- //
- IdRegister = KeArmIdCodeRegisterGet();
-
- //
- // Architecture "6" CPUs support test-and-clean (926EJ-S and 1026EJ-S)
- //
- HalpTestCleanSupported = (IdRegister.Architecture == 6);
-}
-
-VOID
-HalSweepDcache(VOID)
-{
- //
- // We get called very early on, before HalInitSystem or any of the Hal*
- // processor routines, so we need to figure out what CPU we're on.
- //
- if (!HalpProcessorIdentified) HalpIdentifyProcessor();
-
- //
- // Check if we can do it the ARMv5TE-J way
- //
- if (HalpTestCleanSupported)
- {
- //
- // Test, clean, flush D-Cache
- //
- __asm__ __volatile__ ("1: mrc p15, 0, pc, c7, c14, 3; bne 1b");
- }
- else
- {
- //
- // We need to do it it by set/way
- //
- UNIMPLEMENTED;
- }
-}
-
-VOID
-HalSweepIcache(VOID)
-{
- //
- // All ARM cores support the same Icache flush command, no need for HAL work
- //
- KeArmFlushIcache();
-}
-
-/*
- * @implemented
- */
-#undef KeGetCurrentIrql
-KIRQL
-NTAPI
-KeGetCurrentIrql(VOID)
-{
- /* Return IRQL */
- return PCR->CurrentIrql;
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeLowerIrql(KIRQL NewIrql)
-{
- /* Call the fastcall function */
- KfLowerIrql(NewIrql);
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeRaiseIrql(KIRQL NewIrql,
- PKIRQL OldIrql)
-{
- /* Call the fastcall function */
- *OldIrql = KfRaiseIrql(NewIrql);
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
- PKIRQL OldIrql)
-{
- /* Call the fastcall function */
- *OldIrql = KfAcquireSpinLock(SpinLock);
-}
-
-/*
- * @implemented
- */
-KIRQL
-FASTCALL
-KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock)
-{
- /* Simply raise to dispatch */
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-VOID
-NTAPI
-KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
- KIRQL NewIrql)
-{
- /* Call the fastcall function */
- KfReleaseSpinLock(SpinLock, NewIrql);
-}
-
-/*
- * @implemented
- */
-KIRQL
-FASTCALL
-KfAcquireSpinLock(PKSPIN_LOCK SpinLock)
-{
- /* Simply raise to dispatch */
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-VOID
-FASTCALL
-KfReleaseSpinLock(PKSPIN_LOCK SpinLock,
- KIRQL OldIrql)
-{
- /* Simply lower IRQL back */
- KfLowerIrql(OldIrql);
-}
-
-/*
- * @implemented
- */
-KIRQL
-FASTCALL
-KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
-{
- /* Simply raise to dispatch */
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-KIRQL
-FASTCALL
-KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
-{
- /* Simply raise to dispatch */
- return KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock,
- IN PKLOCK_QUEUE_HANDLE LockHandle)
-{
- /* Simply raise to dispatch */
- LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-VOID
-FASTCALL
-KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock,
- IN PKLOCK_QUEUE_HANDLE LockHandle)
-{
- /* Simply raise to synch */
- LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
-}
-
-/*
- * @implemented
- */
-VOID
-FASTCALL
-KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
- IN KIRQL OldIrql)
-{
- /* Simply lower IRQL back */
- KfLowerIrql(OldIrql);
-}
-
-/*
- * @implemented
- */
-VOID
-FASTCALL
-KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle)
-{
- /* Simply lower IRQL back */
- KfLowerIrql(LockHandle->OldIrql);
-}
-
-/*
- * @implemented
- */
-BOOLEAN
-FASTCALL
-KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
- IN PKIRQL OldIrql)
-{
- /* Simply raise to dispatch */
- *OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
-
- /* Always return true on UP Machines */
- return TRUE;
-}
-
-/*
- * @implemented
- */
-LOGICAL
-FASTCALL
-KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
- OUT PKIRQL OldIrql)
-{
- /* Simply raise to dispatch */
- *OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
-
- /* Always return true on UP Machines */
- return TRUE;
-}
-
-/* EOF */
Added: trunk/reactos/hal/halarm/generic/halinit.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/halinit…
==============================================================================
--- trunk/reactos/hal/halarm/generic/halinit.c (added)
+++ trunk/reactos/hal/halarm/generic/halinit.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,182 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/halinit.c
+ * PURPOSE: HAL Entrypoint and Initialization
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* GLOBALS ********************************************************************/
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+VOID
+NTAPI
+HalpGetParameters(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
+{
+ PCHAR CommandLine;
+
+ /* Make sure we have a loader block and command line */
+ if ((LoaderBlock) && (LoaderBlock->LoadOptions))
+ {
+ /* Read the command line */
+ CommandLine = LoaderBlock->LoadOptions;
+
+ /* Check for initial breakpoint */
+ if (strstr(CommandLine, "BREAK")) DbgBreakPoint();
+ }
+}
+
+/* FUNCTIONS ******************************************************************/
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalInitSystem(IN ULONG BootPhase,
+ IN PLOADER_PARAMETER_BLOCK LoaderBlock)
+{
+ PKPRCB Prcb = KeGetCurrentPrcb();
+
+ /* Check the boot phase */
+ if (!BootPhase)
+ {
+ /* Get command-line parameters */
+ HalpGetParameters(LoaderBlock);
+
+ /* Checked HAL requires checked kernel */
+#if DBG
+ if (!(Prcb->BuildType & PRCB_BUILD_DEBUG))
+ {
+ /* No match, bugcheck */
+ KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 1, 0);
+ }
+#else
+ /* Release build requires release HAL */
+ if (Prcb->BuildType & PRCB_BUILD_DEBUG)
+ {
+ /* No match, bugcheck */
+ KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 0, 0);
+ }
+#endif
+
+#ifdef CONFIG_SMP
+ /* SMP HAL requires SMP kernel */
+ if (Prcb->BuildType & PRCB_BUILD_UNIPROCESSOR)
+ {
+ /* No match, bugcheck */
+ KeBugCheckEx(MISMATCHED_HAL, 2, Prcb->BuildType, 0, 0);
+ }
+#endif
+
+ /* Validate the PRCB */
+ if (Prcb->MajorVersion != PRCB_MAJOR_VERSION)
+ {
+ /* Validation failed, bugcheck */
+ KeBugCheckEx(MISMATCHED_HAL, 1, Prcb->MajorVersion, 1, 0);
+ }
+
+ /* Initialize interrupts */
+ HalpInitializeInterrupts();
+
+ /* Force initial PIC state */
+ KfRaiseIrql(KeGetCurrentIrql());
+
+ /* Fill out the dispatch tables */
+ //HalQuerySystemInformation = NULL; // FIXME: TODO;
+ //HalSetSystemInformation = NULL; // FIXME: TODO;
+ //HalInitPnpDriver = NULL; // FIXME: TODO
+ //HalGetDmaAdapter = NULL; // FIXME: TODO;
+ //HalGetInterruptTranslator = NULL; // FIXME: TODO
+ //HalResetDisplay = NULL; // FIXME: TODO;
+ //HalHaltSystem = NULL; // FIXME: TODO;
+
+ /* Setup I/O space */
+ //HalpDefaultIoSpace.Next = HalpAddressUsageList;
+ //HalpAddressUsageList = &HalpDefaultIoSpace;
+
+ /* Setup busy waiting */
+ //HalpCalibrateStallExecution();
+
+ /* Initialize the clock */
+ HalpInitializeClock();
+
+ /* Setup time increments to 10ms and 1ms */
+ HalpCurrentTimeIncrement = 100000;
+ HalpNextTimeIncrement = 100000;
+ HalpNextIntervalCount = 0;
+ KeSetTimeIncrement(100000, 10000);
+
+ /*
+ * We could be rebooting with a pending profile interrupt,
+ * so clear it here before interrupts are enabled
+ */
+ HalStopProfileInterrupt(ProfileTime);
+
+ /* Do some HAL-specific initialization */
+ HalpInitPhase0(LoaderBlock);
+ }
+ else if (BootPhase == 1)
+ {
+ /* Enable timer interrupt */
+ HalpEnableInterruptHandler(IDT_DEVICE,
+ 0,
+ PRIMARY_VECTOR_BASE,
+ CLOCK2_LEVEL,
+ HalpClockInterrupt,
+ Latched);
+#if 0
+ /* Enable IRQ 8 */
+ HalpEnableInterruptHandler(IDT_DEVICE,
+ 0,
+ PRIMARY_VECTOR_BASE + 8,
+ PROFILE_LEVEL,
+ HalpProfileInterrupt,
+ Latched);
+#endif
+ /* Initialize DMA. NT does this in Phase 0 */
+ //HalpInitDma();
+
+ /* Do some HAL-specific initialization */
+ HalpInitPhase1();
+ }
+
+ /* All done, return */
+ return TRUE;
+}
+
+#include <internal/kd.h>
+ULONG
+DbgPrintEarly(const char *fmt, ...)
+{
+ va_list args;
+ unsigned int i;
+ char Buffer[1024];
+ PCHAR String = Buffer;
+
+ va_start(args, fmt);
+ i = vsprintf(Buffer, fmt, args);
+ va_end(args);
+
+ /* Output the message */
+ while (*String != 0)
+ {
+ if (*String == '\n')
+ {
+ KdPortPutByteEx(NULL, '\r');
+ }
+ KdPortPutByteEx(NULL, *String);
+ String++;
+ }
+
+ return STATUS_SUCCESS;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/halinit.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/misc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/misc.c?…
==============================================================================
--- trunk/reactos/hal/halarm/generic/misc.c (added)
+++ trunk/reactos/hal/halarm/generic/misc.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,47 @@
+/*
+ * PROJECT: ReactOS Hardware Abstraction Layer (HAL)
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/misc.c
+ * PURPOSE: Misc functions to move
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* GLOBALS *******************************************************************/
+
+/* FUNCTIONS ******************************************************************/
+
+/*
+ * @implemented
+ */
+UCHAR
+FASTCALL
+HalSystemVectorDispatchEntry(IN ULONG Vector,
+ OUT PKINTERRUPT_ROUTINE **FlatDispatch,
+ OUT PKINTERRUPT_ROUTINE *NoConnection)
+{
+ /* Not implemented */
+ UNIMPLEMENTED;
+ while (TRUE);
+ return 0;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeFlushWriteBuffer(VOID)
+{
+ /* Not implemented */
+ UNIMPLEMENTED;
+ while (TRUE);
+ return;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/misc.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/pic.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/pic.c?r…
==============================================================================
--- trunk/reactos/hal/halarm/generic/pic.c (added)
+++ trunk/reactos/hal/halarm/generic/pic.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,342 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/pic.c
+ * PURPOSE: HAL PIC Management and Control Code
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+#undef KeGetCurrentIrql
+
+/* GLOBALS ********************************************************************/
+
+ULONG HalpIrqlTable[HIGH_LEVEL + 1] =
+{
+ 0xFFFFFFFF, // IRQL 0 PASSIVE_LEVEL
+ 0xFFFFFFFD, // IRQL 1 APC_LEVEL
+ 0xFFFFFFF9, // IRQL 2 DISPATCH_LEVEL
+ 0xFFFFFFD9, // IRQL 3
+ 0xFFFFFF99, // IRQL 4
+ 0xFFFFFF19, // IRQL 5
+ 0xFFFFFE19, // IRQL 6
+ 0xFFFFFC19, // IRQL 7
+ 0xFFFFF819, // IRQL 8
+ 0xFFFFF019, // IRQL 9
+ 0xFFFFE019, // IRQL 10
+ 0xFFFFC019, // IRQL 11
+ 0xFFFF8019, // IRQL 12
+ 0xFFFF0019, // IRQL 13
+ 0xFFFE0019, // IRQL 14
+ 0xFFFC0019, // IRQL 15
+ 0xFFF80019, // IRQL 16
+ 0xFFF00019, // IRQL 17
+ 0xFFE00019, // IRQL 18
+ 0xFFC00019, // IRQL 19
+ 0xFF800019, // IRQL 20
+ 0xFF000019, // IRQL 21
+ 0xFE000019, // IRQL 22
+ 0xFC000019, // IRQL 23
+ 0xF0000019, // IRQL 24
+ 0x80000019, // IRQL 25
+ 0x19, // IRQL 26
+ 0x18, // IRQL 27 PROFILE_LEVEL
+ 0x10, // IRQL 28 CLOCK2_LEVEL
+ 0x00, // IRQL 29 IPI_LEVEL
+ 0x00, // IRQL 30 POWER_LEVEL
+ 0x00, // IRQL 31 HIGH_LEVEL
+};
+
+UCHAR HalpMaskTable[HIGH_LEVEL + 1] =
+{
+ PROFILE_LEVEL, // INT 0 WATCHDOG
+ APC_LEVEL, // INT 1 SOFTWARE INTERRUPT
+ DISPATCH_LEVEL,// INT 2 COMM RX
+ IPI_LEVEL, // INT 3 COMM TX
+ CLOCK2_LEVEL, // INT 4 TIMER 0
+ 3,
+ 4,
+ 5,
+ 6,
+ 7,
+ 8,
+ 9,
+ 10,
+ 11,
+ 12,
+ 13,
+ 14,
+ 15,
+ 16,
+ 17,
+ 18,
+ 19,
+ 20,
+ 21,
+ 22,
+ 23,
+ 24,
+ 25,
+ 26,
+ 26,
+ 26
+};
+
+/* FUNCTIONS ******************************************************************/
+
+VOID
+HalpInitializeInterrupts(VOID)
+{
+ PKIPCR Pcr = (PKIPCR)KeGetPcr();
+
+ /* Fill out the IRQL mappings */
+ RtlCopyMemory(Pcr->IrqlTable, HalpIrqlTable, sizeof(Pcr->IrqlTable));
+ RtlCopyMemory(Pcr->IrqlMask, HalpMaskTable, sizeof(Pcr->IrqlMask));
+}
+
+/* IRQL MANAGEMENT ************************************************************/
+
+/*
+ * @implemented
+ */
+ULONG
+HalGetInterruptSource(VOID)
+{
+ ULONG InterruptStatus;
+
+ /* Get the interrupt status, and return the highest bit set */
+ InterruptStatus = READ_REGISTER_ULONG(VIC_INT_STATUS);
+ return 31 - _clz(InterruptStatus);
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+NTAPI
+KeGetCurrentIrql(VOID)
+{
+ /* Return the IRQL */
+ return KeGetPcr()->Irql;
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+NTAPI
+KeRaiseIrqlToDpcLevel(VOID)
+{
+ PKPCR Pcr = KeGetPcr();
+ KIRQL CurrentIrql;
+
+ /* Save and update IRQL */
+ CurrentIrql = Pcr->Irql;
+ Pcr->Irql = DISPATCH_LEVEL;
+
+#ifdef IRQL_DEBUG
+ /* Validate correct raise */
+ if (CurrentIrql > DISPATCH_LEVEL) KeBugCheck(IRQL_NOT_GREATER_OR_EQUAL);
+#endif
+
+ /* Return the previous value */
+ return CurrentIrql;
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+NTAPI
+KeRaiseIrqlToSynchLevel(VOID)
+{
+ PKPCR Pcr = KeGetPcr();
+ KIRQL CurrentIrql;
+
+ /* Save and update IRQL */
+ CurrentIrql = Pcr->Irql;
+ Pcr->Irql = SYNCH_LEVEL;
+
+#ifdef IRQL_DEBUG
+ /* Validate correct raise */
+ if (CurrentIrql > SYNCH_LEVEL)
+ {
+ /* Crash system */
+ KeBugCheckEx(IRQL_NOT_GREATER_OR_EQUAL,
+ CurrentIrql,
+ SYNCH_LEVEL,
+ 0,
+ 1);
+ }
+#endif
+
+ /* Return the previous value */
+ return CurrentIrql;
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+FASTCALL
+KfRaiseIrql(IN KIRQL NewIrql)
+{
+ ARM_STATUS_REGISTER Flags;
+ PKIPCR Pcr = (PKIPCR)KeGetPcr();
+ KIRQL CurrentIrql;
+ ULONG InterruptMask;
+
+ /* Disable interrupts */
+ Flags = KeArmStatusRegisterGet();
+ _disable();
+
+ /* Read current IRQL */
+ CurrentIrql = Pcr->Irql;
+
+#ifdef IRQL_DEBUG
+ /* Validate correct raise */
+ if (CurrentIrql > NewIrql)
+ {
+ /* Crash system */
+ Pcr->Irql = PASSIVE_LEVEL;
+ KeBugCheck(IRQL_NOT_GREATER_OR_EQUAL);
+ }
+#endif
+ /* Clear interrupts associated to the old IRQL */
+ WRITE_REGISTER_ULONG(VIC_INT_CLEAR, 0xFFFFFFFF);
+
+ /* Set the new interrupt mask */
+ InterruptMask = Pcr->IrqlTable[NewIrql];
+ WRITE_REGISTER_ULONG(VIC_INT_ENABLE, InterruptMask);
+
+ /* Set new IRQL */
+ Pcr->Irql = NewIrql;
+
+ /* Restore interrupt state */
+ if (!Flags.IrqDisable) _enable();
+
+ /* Return old IRQL */
+ return CurrentIrql;
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KfLowerIrql(IN KIRQL NewIrql)
+{
+ ARM_STATUS_REGISTER Flags;
+ PKIPCR Pcr = (PKIPCR)KeGetPcr();
+ ULONG InterruptMask;
+
+ /* Disableinterrupts */
+ Flags = KeArmStatusRegisterGet();
+ _disable();
+
+#ifdef IRQL_DEBUG
+ /* Validate correct lower */
+ if (OldIrql > Pcr->Irql)
+ {
+ /* Crash system */
+ Pcr->Irql = HIGH_LEVEL;
+ KeBugCheck(IRQL_NOT_LESS_OR_EQUAL);
+ }
+#endif
+
+ /* Clear interrupts associated to the old IRQL */
+ WRITE_REGISTER_ULONG(VIC_INT_CLEAR, 0xFFFFFFFF);
+
+ /* Set the new interrupt mask */
+ InterruptMask = Pcr->IrqlTable[NewIrql];
+ WRITE_REGISTER_ULONG(VIC_INT_ENABLE, InterruptMask);
+
+ /* Save the new IRQL and restore interrupt state */
+ Pcr->Irql = NewIrql;
+ if (!Flags.IrqDisable) _enable();
+}
+
+/* SOFTWARE INTERRUPTS ********************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+HalRequestSoftwareInterrupt(IN KIRQL Irql)
+{
+ /* Force a software interrupt */
+ WRITE_REGISTER_ULONG(VIC_SOFT_INT, 1 << Irql);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+HalClearSoftwareInterrupt(IN KIRQL Irql)
+{
+ /* Clear software interrupt */
+ WRITE_REGISTER_ULONG(VIC_SOFT_INT_CLEAR, 1 << Irql);
+}
+
+/* SYSTEM INTERRUPTS **********************************************************/
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalEnableSystemInterrupt(IN UCHAR Vector,
+ IN KIRQL Irql,
+ IN KINTERRUPT_MODE InterruptMode)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return FALSE;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalDisableSystemInterrupt(IN UCHAR Vector,
+ IN KIRQL Irql)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalBeginSystemInterrupt(IN KIRQL Irql,
+ IN UCHAR Vector,
+ OUT PKIRQL OldIrql)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return FALSE;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalEndSystemInterrupt(IN KIRQL OldIrql,
+ IN PKTRAP_FRAME TrapFrame)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/pic.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/portio.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/portio.…
==============================================================================
--- trunk/reactos/hal/halarm/generic/portio.c (added)
+++ trunk/reactos/hal/halarm/generic/portio.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,129 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/portio.c
+ * PURPOSE: I/O Functions for access to ports
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+#undef READ_PORT_UCHAR
+#undef READ_PORT_USHORT
+#undef READ_PORT_ULONG
+#undef WRITE_PORT_UCHAR
+#undef WRITE_PORT_USHORT
+#undef WRITE_PORT_ULONG
+
+/* FUNCTIONS ******************************************************************/
+
+VOID
+NTAPI
+READ_PORT_BUFFER_UCHAR(IN PUCHAR Port,
+ OUT PUCHAR Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+NTAPI
+READ_PORT_BUFFER_USHORT(IN PUSHORT Port,
+ OUT PUSHORT Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+NTAPI
+READ_PORT_BUFFER_ULONG(IN PULONG Port,
+ OUT PULONG Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+UCHAR
+NTAPI
+READ_PORT_UCHAR(IN PUCHAR Port)
+{
+ return READ_REGISTER_UCHAR(Port);
+}
+
+USHORT
+NTAPI
+READ_PORT_USHORT(IN PUSHORT Port)
+{
+ return READ_REGISTER_USHORT(Port);
+}
+
+ULONG
+NTAPI
+READ_PORT_ULONG(IN PULONG Port)
+{
+ return READ_REGISTER_ULONG(Port);
+}
+
+VOID
+NTAPI
+WRITE_PORT_BUFFER_UCHAR(IN PUCHAR Port,
+ IN PUCHAR Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+NTAPI
+WRITE_PORT_BUFFER_USHORT(IN PUSHORT Port,
+ IN PUSHORT Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+NTAPI
+WRITE_PORT_BUFFER_ULONG(IN PULONG Port,
+ IN PULONG Buffer,
+ IN ULONG Count)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+VOID
+NTAPI
+WRITE_PORT_UCHAR(IN PUCHAR Port,
+ IN UCHAR Value)
+{
+ WRITE_REGISTER_UCHAR(Port, Value);
+}
+
+VOID
+NTAPI
+WRITE_PORT_USHORT(IN PUSHORT Port,
+ IN USHORT Value)
+{
+ WRITE_REGISTER_USHORT(Port, Value);
+}
+
+VOID
+NTAPI
+WRITE_PORT_ULONG(IN PULONG Port,
+ IN ULONG Value)
+{
+ WRITE_REGISTER_ULONG(Port, Value);
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/portio.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/processor.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/process…
==============================================================================
--- trunk/reactos/hal/halarm/generic/processor.c (added)
+++ trunk/reactos/hal/halarm/generic/processor.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,141 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/processor.c
+ * PURPOSE: HAL Processor Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* GLOBALS ********************************************************************/
+
+LONG HalpActiveProcessors;
+KAFFINITY HalpDefaultInterruptAffinity;
+BOOLEAN HalpProcessorIdentified;
+BOOLEAN HalpTestCleanSupported;
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+VOID
+HalpIdentifyProcessor(VOID)
+{
+ ARM_ID_CODE_REGISTER IdRegister;
+
+ /* Don't do it again */
+ HalpProcessorIdentified = TRUE;
+
+ // fixfix: Use Pcr->ProcessorId
+
+ /* Read the ID Code */
+ IdRegister = KeArmIdCodeRegisterGet();
+
+ /* Architecture "6" CPUs support test-and-clean (926EJ-S and 1026EJ-S) */
+ HalpTestCleanSupported = (IdRegister.Architecture == 6);
+}
+
+/* FUNCTIONS ******************************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalInitializeProcessor(IN ULONG ProcessorNumber,
+ IN PLOADER_PARAMETER_BLOCK LoaderBlock)
+{
+ /* Do nothing */
+ return;
+}
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalAllProcessorsStarted(VOID)
+{
+ /* Do nothing */
+ return TRUE;
+}
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalStartNextProcessor(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
+ IN PKPROCESSOR_STATE ProcessorState)
+{
+ /* Ready to start */
+ return FALSE;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalProcessorIdle(VOID)
+{
+ /* Enable interrupts and halt the processor */
+ _enable();
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalRequestIpi(KAFFINITY TargetProcessors)
+{
+ /* Not implemented on UP */
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @implemented
+ */
+VOID
+HalSweepDcache(VOID)
+{
+ /*
+ * We get called very early on, before HalInitSystem or any of the Hal*
+ * processor routines, so we need to figure out what CPU we're on.
+ */
+ if (!HalpProcessorIdentified) HalpIdentifyProcessor();
+
+ /*
+ * Check if we can do it the ARMv5TE-J way
+ */
+ if (HalpTestCleanSupported)
+ {
+ /* Test, clean, flush D-Cache */
+ __asm__ __volatile__ ("1: mrc p15, 0, pc, c7, c14, 3; bne 1b");
+ }
+ else
+ {
+ /* We need to do it it by set/way. For now always call ARMv7 function */
+ //extern VOID v7_flush_dcache_all(VOID);
+ //v7_flush_dcache_all();
+ }
+}
+
+/*
+ * @implemented
+ */
+VOID
+HalSweepIcache(VOID)
+{
+ /* All ARM cores support the same Icache flush command */
+ KeArmFlushIcache();
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/processor.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/profil.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/profil.…
==============================================================================
--- trunk/reactos/hal/halarm/generic/profil.c (added)
+++ trunk/reactos/hal/halarm/generic/profil.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,50 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/profil.c
+ * PURPOSE: System Profiling
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalStopProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
+{
+ UNIMPLEMENTED;
+ return;
+}
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalStartProfileInterrupt(IN KPROFILE_SOURCE ProfileSource)
+{
+ UNIMPLEMENTED;
+ return;
+}
+
+/*
+ * @unimplemented
+ */
+ULONG_PTR
+NTAPI
+HalSetProfileInterval(IN ULONG_PTR Interval)
+{
+ UNIMPLEMENTED;
+ return Interval;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/profil.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/reboot.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/reboot.…
==============================================================================
--- trunk/reactos/hal/halarm/generic/reboot.c (added)
+++ trunk/reactos/hal/halarm/generic/reboot.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,43 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/reboot.c
+ * PURPOSE: Reboot Function
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* PUBLIC FUNCTIONS **********************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalReturnToFirmware(IN FIRMWARE_REENTRY Action)
+{
+ /* Check what kind of action this is */
+ switch (Action)
+ {
+ /* All recognized actions */
+ case HalHaltRoutine:
+ case HalRebootRoutine:
+
+ /* Acquire the display */
+ InbvAcquireDisplayOwnership();
+
+ /* Anything else */
+ default:
+
+ /* Print message and break */
+ DbgPrint("HalReturnToFirmware called!\n");
+ DbgBreakPoint();
+ }
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/reboot.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/rtc.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/rtc.c?r…
==============================================================================
--- trunk/reactos/hal/halarm/generic/rtc.c (added)
+++ trunk/reactos/hal/halarm/generic/rtc.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,79 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/rtc.c
+ * PURPOSE: Real Time Clock and Environment Variable Support
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+#define RTC_DATA (PVOID)0x101E8000
+
+/*
+ * @implemented
+ */
+BOOLEAN
+NTAPI
+HalQueryRealTimeClock(IN PTIME_FIELDS Time)
+{
+ LARGE_INTEGER LargeTime;
+ ULONG Seconds;
+
+ /* Query the RTC value */
+ Seconds = READ_REGISTER_ULONG(RTC_DATA);
+
+ /* Convert to time */
+ RtlSecondsSince1970ToTime(Seconds, &LargeTime);
+
+ /* Convert to time-fields */
+ RtlTimeToTimeFields(&LargeTime, Time);
+ return TRUE;
+}
+
+/*
+ * @unimplemented
+ */
+BOOLEAN
+NTAPI
+HalSetRealTimeClock(IN PTIME_FIELDS Time)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return TRUE;
+}
+
+/*
+ * @unimplemented
+ */
+ARC_STATUS
+NTAPI
+HalSetEnvironmentVariable(IN PCH Name,
+ IN PCH Value)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return ESUCCESS;
+}
+
+/*
+ * @unimplemented
+ */
+ARC_STATUS
+NTAPI
+HalGetEnvironmentVariable(IN PCH Name,
+ IN USHORT ValueLength,
+ IN PCH Value)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return ENOENT;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/rtc.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/spinlock.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/spinloc…
==============================================================================
--- trunk/reactos/hal/halarm/generic/spinlock.c (added)
+++ trunk/reactos/hal/halarm/generic/spinlock.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,202 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/spinlock.c
+ * PURPOSE: SpinLock Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES ******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+#undef KeAcquireSpinLock
+#undef KeReleaseSpinLock
+#undef KeRaiseIrql
+#undef KeLowerIrql
+
+/* FUNCTIONS *****************************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeRaiseIrql(KIRQL NewIrql,
+ PKIRQL OldIrql)
+{
+ /* Call the fastcall function */
+ *OldIrql = KfRaiseIrql(NewIrql);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeLowerIrql(KIRQL NewIrql)
+{
+ /* Call the fastcall function */
+ KfLowerIrql(NewIrql);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeAcquireSpinLock(PKSPIN_LOCK SpinLock,
+ PKIRQL OldIrql)
+{
+ /* Call the fastcall function */
+ *OldIrql = KfAcquireSpinLock(SpinLock);
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+FASTCALL
+KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock)
+{
+ /* Simply raise to dispatch */
+ return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeReleaseSpinLock(PKSPIN_LOCK SpinLock,
+ KIRQL NewIrql)
+{
+ /* Call the fastcall function */
+ KfReleaseSpinLock(SpinLock, NewIrql);
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+FASTCALL
+KfAcquireSpinLock(PKSPIN_LOCK SpinLock)
+{
+ /* Simply raise to dispatch */
+ return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KfReleaseSpinLock(PKSPIN_LOCK SpinLock,
+ KIRQL OldIrql)
+{
+ /* Simply lower IRQL back */
+ KeLowerIrql(OldIrql);
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+FASTCALL
+KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
+{
+ /* Simply raise to dispatch */
+ return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+KIRQL
+FASTCALL
+KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber)
+{
+ /* Simply raise to dispatch */
+ return KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock,
+ IN PKLOCK_QUEUE_HANDLE LockHandle)
+{
+ /* Simply raise to dispatch */
+ LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock,
+ IN PKLOCK_QUEUE_HANDLE LockHandle)
+{
+ /* Simply raise to dispatch */
+ LockHandle->OldIrql = KfRaiseIrql(DISPATCH_LEVEL);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
+ IN KIRQL OldIrql)
+{
+ /* Simply lower IRQL back */
+ KfLowerIrql(OldIrql);
+}
+
+/*
+ * @implemented
+ */
+VOID
+FASTCALL
+KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle)
+{
+ /* Simply lower IRQL back */
+ KfLowerIrql(LockHandle->OldIrql);
+}
+
+/*
+ * @implemented
+ */
+BOOLEAN
+FASTCALL
+KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
+ IN PKIRQL OldIrql)
+{
+ /* Simply raise to synch */
+ KeRaiseIrql(SYNCH_LEVEL, OldIrql);
+
+ /* Always return true on UP Machines */
+ return TRUE;
+}
+
+/*
+ * @implemented
+ */
+LOGICAL
+FASTCALL
+KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber,
+ OUT PKIRQL OldIrql)
+{
+ /* Simply raise to dispatch */
+ KeRaiseIrql(DISPATCH_LEVEL, OldIrql);
+
+ /* Always return true on UP Machines */
+ return TRUE;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/spinlock.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/sysinfo.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/sysinfo…
==============================================================================
--- trunk/reactos/hal/halarm/generic/sysinfo.c (added)
+++ trunk/reactos/hal/halarm/generic/sysinfo.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,40 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/spinlock.c
+ * PURPOSE: HAL Information Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* FUNCTIONS ******************************************************************/
+
+NTSTATUS
+NTAPI
+HaliQuerySystemInformation(IN HAL_QUERY_INFORMATION_CLASS InformationClass,
+ IN ULONG BufferSize,
+ IN OUT PVOID Buffer,
+ OUT PULONG ReturnedLength)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return STATUS_NOT_IMPLEMENTED;
+}
+
+NTSTATUS
+NTAPI
+HaliSetSystemInformation(IN HAL_SET_INFORMATION_CLASS InformationClass,
+ IN ULONG BufferSize,
+ IN OUT PVOID Buffer)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return STATUS_NOT_IMPLEMENTED;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/sysinfo.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/timer.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/timer.c…
==============================================================================
--- trunk/reactos/hal/halarm/generic/timer.c (added)
+++ trunk/reactos/hal/halarm/generic/timer.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,149 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/timer.c
+ * PURPOSE: Timer Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+VOID
+FASTCALL
+KeUpdateSystemTime(
+ IN PKTRAP_FRAME TrapFrame,
+ IN ULONG Increment,
+ IN KIRQL OldIrql
+);
+
+/* GLOBALS ********************************************************************/
+
+ULONG HalpCurrentTimeIncrement, HalpNextTimeIncrement, HalpNextIntervalCount;
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+VOID
+HalpClockInterrupt(VOID)
+{
+ /* Clear the interrupt */
+ ASSERT(KeGetCurrentIrql() == CLOCK2_LEVEL);
+ WRITE_REGISTER_ULONG(TIMER0_INT_CLEAR, 1);
+
+ /* FIXME: Update HAL Perf counters */
+
+ /* FIXME: Check if someone changed the clockrate */
+
+ /* Call the kernel */
+ KeUpdateSystemTime(KeGetCurrentThread()->TrapFrame,
+ HalpCurrentTimeIncrement,
+ CLOCK2_LEVEL);
+}
+
+VOID
+HalpStallInterrupt(VOID)
+{
+ /* Clear the interrupt */
+ WRITE_REGISTER_ULONG(TIMER0_INT_CLEAR, 1);
+}
+
+VOID
+HalpInitializeClock(VOID)
+{
+ PKIPCR Pcr = (PKIPCR)KeGetPcr();
+ ULONG ClockInterval;
+ SP804_CONTROL_REGISTER ControlRegister;
+
+ /* Setup the clock and profile interrupt */
+ Pcr->InterruptRoutine[CLOCK2_LEVEL] = HalpStallInterrupt;
+
+ /*
+ * Configure the interval to 10ms
+ * (INTERVAL (10ms) * TIMCLKfreq (1MHz))
+ * --------------------------------------- == 10^4
+ * (TIMCLKENXdiv (1) * PRESCALEdiv (1))
+ */
+ ClockInterval = 0x2710;
+
+ /* Configure the timer */
+ ControlRegister.AsUlong = 0;
+ ControlRegister.Wide = TRUE;
+ ControlRegister.Periodic = TRUE;
+ ControlRegister.Interrupt = TRUE;
+ ControlRegister.Enabled = TRUE;
+
+ /* Enable the timer */
+ WRITE_REGISTER_ULONG(TIMER0_LOAD, ClockInterval);
+ WRITE_REGISTER_ULONG(TIMER0_CONTROL, ControlRegister.AsUlong);
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+HalCalibratePerformanceCounter(IN volatile PLONG Count,
+ IN ULONGLONG NewCount)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+}
+
+/*
+ * @implemented
+ */
+ULONG
+NTAPI
+HalSetTimeIncrement(IN ULONG Increment)
+{
+ UNIMPLEMENTED;
+ while (TRUE);
+ return Increment;
+}
+
+/*
+ * @implemented
+ */
+VOID
+NTAPI
+KeStallExecutionProcessor(IN ULONG Microseconds)
+{
+ SP804_CONTROL_REGISTER ControlRegister;
+
+ /* Enable the timer */
+ WRITE_REGISTER_ULONG(TIMER1_LOAD, Microseconds);
+
+ /* Configure the timer */
+ ControlRegister.AsUlong = 0;
+ ControlRegister.OneShot = TRUE;
+ ControlRegister.Wide = TRUE;
+ ControlRegister.Periodic = TRUE;
+ ControlRegister.Enabled = TRUE;
+ WRITE_REGISTER_ULONG(TIMER1_CONTROL, ControlRegister.AsUlong);
+
+ /* Now we will loop until the timer reached 0 */
+ while (READ_REGISTER_ULONG(TIMER1_VALUE));
+}
+
+/*
+ * @implemented
+ */
+LARGE_INTEGER
+NTAPI
+KeQueryPerformanceCounter(IN PLARGE_INTEGER PerformanceFreq)
+{
+ LARGE_INTEGER Value;
+
+ UNIMPLEMENTED;
+ while (TRUE);
+
+ Value.QuadPart = 0;
+ return Value;
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/timer.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/generic/usage.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/usage.c…
==============================================================================
--- trunk/reactos/hal/halarm/generic/usage.c (added)
+++ trunk/reactos/hal/halarm/generic/usage.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,76 @@
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/generic/usage.c
+ * PURPOSE: Resource Usage Management Routines
+ * PROGRAMMERS: ReactOS Portable Systems Group
+ */
+
+/* INCLUDES *******************************************************************/
+
+#include <hal.h>
+#define NDEBUG
+#include <debug.h>
+
+/* GLOBALS ********************************************************************/
+
+PUCHAR KdComPortInUse;
+
+IDTUsageFlags HalpIDTUsageFlags[256];
+IDTUsage HalpIDTUsage[256];
+
+/* PRIVATE FUNCTIONS **********************************************************/
+
+VOID
+NTAPI
+HalpReportResourceUsage(IN PUNICODE_STRING HalName,
+ IN INTERFACE_TYPE InterfaceType)
+{
+ DbgPrint("%wZ has been initialized\n", HalName);
+}
+
+VOID
+NTAPI
+HalpRegisterVector(IN UCHAR Flags,
+ IN ULONG BusVector,
+ IN ULONG SystemVector,
+ IN KIRQL Irql)
+{
+ /* Save the vector flags */
+ HalpIDTUsageFlags[SystemVector].Flags = Flags;
+
+ /* Save the vector data */
+ HalpIDTUsage[SystemVector].Irql = Irql;
+ HalpIDTUsage[SystemVector].BusReleativeVector = BusVector;
+}
+
+VOID
+NTAPI
+HalpEnableInterruptHandler(IN UCHAR Flags,
+ IN ULONG BusVector,
+ IN ULONG SystemVector,
+ IN KIRQL Irql,
+ IN PVOID Handler,
+ IN KINTERRUPT_MODE Mode)
+{
+ /* Register the routine */
+ ((PKIPCR)KeGetPcr())->InterruptRoutine[Irql] = Handler;
+}
+
+/* PUBLIC FUNCTIONS ***********************************************************/
+
+/*
+ * @unimplemented
+ */
+VOID
+NTAPI
+HalReportResourceUsage(VOID)
+{
+ UNICODE_STRING HalString;
+
+ /* Build HAL usage */
+ RtlInitUnicodeString(&HalString, L"ARM Versatile HAL");
+ HalpReportResourceUsage(&HalString, Internal);
+}
+
+/* EOF */
Propchange: trunk/reactos/hal/halarm/generic/usage.c
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/hal.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/hal.rbuild?rev=…
==============================================================================
--- trunk/reactos/hal/halarm/hal.rbuild (added)
+++ trunk/reactos/hal/halarm/hal.rbuild [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE group SYSTEM "../../tools/rbuild/project.dtd">
+<group
xmlns:xi="http://www.w3.org/2001/XInclude">
+ <module name="hal" type="kernelmodedll"
entrypoint="HalInitSystem@8" installbase="system32"
installname="hal.dll">
+ <importlibrary base="hal" definition="../hal.pspec" />
+ <bootstrap installbase="$(CDOUTPUT)" />
+ <include>include</include>
+ <include base="ntoskrnl">include</include>
+ <define name="_NTHAL_" />
+ <library>hal_generic</library>
+ <library>ntoskrnl</library>
+
+ <directory name="versa">
+ <file>halinit_up.c</file>
+ <file>halup.rc</file>
+ </directory>
+ </module>
+</group>
Propchange: trunk/reactos/hal/halarm/hal.rbuild
------------------------------------------------------------------------------
svn:eol-style = native
Added: trunk/reactos/hal/halarm/hal_generic.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/hal_generic.rbu…
==============================================================================
--- trunk/reactos/hal/halarm/hal_generic.rbuild (added)
+++ trunk/reactos/hal/halarm/hal_generic.rbuild [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,0 +1,33 @@
+<?xml version="1.0"?>
+<!DOCTYPE group SYSTEM "../../../tools/rbuild/project.dtd">
+<group>
+ <module name="hal_generic" type="objectlibrary">
+ <include>include</include>
+ <include base="ntoskrnl">include</include>
+ <define name="_NTHAL_" />
+ <directory name="generic">
+ <file>beep.c</file>
+ <file>bus.c</file>
+ <file>cache.S</file>
+ <file>dma.c</file>
+ <file>drive.c</file>
+ <file>display.c</file>
+ <file>fmutex.c</file>
+ <file>halinit.c</file>
+ <file>misc.c</file>
+ <file>pic.c</file>
+ <file>portio.c</file>
+ <file>processor.c</file>
+ <file>profil.c</file>
+ <file>reboot.c</file>
+ <file>rtc.c</file>
+ <file>spinlock.c</file>
+ <file>sysinfo.c</file>
+ <file>timer.c</file>
+ <file>usage.c</file>
+ </directory>
+ <directory name="include">
+ <pch>hal.h</pch>
+ </directory>
+ </module>
+</group>
Propchange: trunk/reactos/hal/halarm/hal_generic.rbuild
------------------------------------------------------------------------------
svn:eol-style = native
Modified: trunk/reactos/hal/halarm/include/hal.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/include/hal.h?r…
==============================================================================
--- trunk/reactos/hal/halarm/include/hal.h [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/include/hal.h [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -9,6 +9,7 @@
/* INCLUDES ******************************************************************/
/* C Headers */
+#define DbgPrint DbgPrintEarly
#include <stdio.h>
/* WDK HAL Compilation hack */
@@ -22,6 +23,7 @@
/* IFS/DDK/NDK Headers */
#include <ntifs.h>
+#include <ioaccess.h>
#include <bugcodes.h>
#include <ntdddisk.h>
#include <arc/arc.h>
@@ -29,6 +31,7 @@
#include <kefuncs.h>
#include <intrin.h>
#include <halfuncs.h>
+#include <inbvfuncs.h>
#include <iofuncs.h>
#include <ldrtypes.h>
#include <obfuncs.h>
Modified: trunk/reactos/hal/halarm/include/halp.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/include/halp.h?…
==============================================================================
--- trunk/reactos/hal/halarm/include/halp.h [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/include/halp.h [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -14,4 +14,49 @@
#include <peripherals/pl190.h>
#include <peripherals/sp804.h>
+#define PRIMARY_VECTOR_BASE 0x00
+
+/* Usage flags */
+#define IDT_REGISTERED 0x01
+#define IDT_LATCHED 0x02
+#define IDT_INTERNAL 0x11
+#define IDT_DEVICE 0x21
+
+typedef struct _IDTUsageFlags
+{
+ UCHAR Flags;
+} IDTUsageFlags;
+
+typedef struct
+{
+ KIRQL Irql;
+ UCHAR BusReleativeVector;
+} IDTUsage;
+
+VOID
+NTAPI
+HalpRegisterVector(IN UCHAR Flags,
+ IN ULONG BusVector,
+ IN ULONG SystemVector,
+ IN KIRQL Irql);
+
+VOID
+NTAPI
+HalpEnableInterruptHandler(IN UCHAR Flags,
+ IN ULONG BusVector,
+ IN ULONG SystemVector,
+ IN KIRQL Irql,
+ IN PVOID Handler,
+ IN KINTERRUPT_MODE Mode);
+
+VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock);
+VOID HalpInitPhase1(VOID);
+
+VOID HalpInitializeInterrupts(VOID);
+VOID HalpInitializeClock(VOID);
+VOID HalpClockInterrupt(VOID);
+VOID HalpProfileInterrupt(VOID);
+
+extern ULONG HalpCurrentTimeIncrement, HalpNextTimeIncrement, HalpNextIntervalCount;
+
#endif /* __INTERNAL_HAL_HAL_H */
Modified: trunk/reactos/hal/halarm/versa/halinit_up.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/versa/halinit_u…
==============================================================================
--- trunk/reactos/hal/halarm/versa/halinit_up.c [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/versa/halinit_up.c [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,21 +1,20 @@
-/* $Id: halinit_up.c 24964 2006-11-29 08:28:20Z ion $
- *
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS kernel
- * FILE: ntoskrnl/hal/x86/halinit.c
- * PURPOSE: Initalize the x86 hal
- * PROGRAMMER: David Welch (welch(a)cwcom.net)
- * UPDATE HISTORY:
- * 11/06/98: Created
+/*
+ * PROJECT: ReactOS HAL
+ * LICENSE: BSD - See COPYING.ARM in the top level directory
+ * FILE: hal/halarm/versa/halinit_up.c
+ * PURPOSE: Versatile Board-Specific HAL Initialization
+ * PROGRAMMERS: ReactOS Portable Systems Group
*/
-/* INCLUDES *****************************************************************/
+/* INCLUDES *******************************************************************/
#include <hal.h>
#define NDEBUG
#include <debug.h>
-/* FUNCTIONS ***************************************************************/
+/* GLOBALS ********************************************************************/
+
+/* PRIVATE FUNCTIONS **********************************************************/
VOID
HalpInitPhase0(IN PLOADER_PARAMETER_BLOCK LoaderBlock)
Modified: trunk/reactos/hal/halarm/versa/halup.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/versa/halup.rbu…
==============================================================================
--- trunk/reactos/hal/halarm/versa/halup.rbuild [iso-8859-1] (original)
+++ trunk/reactos/hal/halarm/versa/halup.rbuild [iso-8859-1] Tue Feb 9 03:26:28 2010
@@ -1,13 +1,16 @@
<?xml version="1.0"?>
<!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd">
<module name="hal" type="kernelmodedll"
entrypoint="HalInitSystem" installbase="system32"
installname="hal.dll">
- <importlibrary base="hal" definition="../../hal.pspec" />
+ <importlibrary base="hal" definition="../hal.pspec" />
<bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" />
- <include base="halarm_generic">../include</include>
+ <include base="hal">include</include>
<include base="ntoskrnl">include</include>
<define name="_NTHAL_" />
- <library>halarm_generic</library>
+ <library>hal_generic</library>
<library>ntoskrnl</library>
- <file>halinit_up.c</file>
- <file>halup.rc</file>
+ <library>kdcom</library>
+ <directory name="versa">
+ <file>halinit_up.c</file>
+ <file>halup.rc</file>
+ </directory>
</module>