diff --git a/Makefile.in b/Makefile.in
index d094b15ed3e1b70ee2f88f7ca7b169476810ba18..e7942ec61d0b8b8c6b1b4e3f933b526c9bd18bd3 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -235,6 +235,7 @@ ALL_MAKEFILES = \
 	dlls/gdi32/tests/Makefile \
 	dlls/glu32/Makefile \
 	dlls/gphoto2.ds/Makefile \
+	dlls/hal/Makefile \
 	dlls/hhctrl.ocx/Makefile \
 	dlls/hid/Makefile \
 	dlls/hlink/Makefile \
@@ -582,6 +583,7 @@ dlls/gdi32/Makefile: dlls/gdi32/Makefile.in dlls/Makedll.rules
 dlls/gdi32/tests/Makefile: dlls/gdi32/tests/Makefile.in dlls/Maketest.rules
 dlls/glu32/Makefile: dlls/glu32/Makefile.in dlls/Makedll.rules
 dlls/gphoto2.ds/Makefile: dlls/gphoto2.ds/Makefile.in dlls/Makedll.rules
+dlls/hal/Makefile: dlls/hal/Makefile.in dlls/Makedll.rules
 dlls/hhctrl.ocx/Makefile: dlls/hhctrl.ocx/Makefile.in dlls/Makedll.rules
 dlls/hid/Makefile: dlls/hid/Makefile.in dlls/Makedll.rules
 dlls/hlink/Makefile: dlls/hlink/Makefile.in dlls/Makedll.rules
diff --git a/configure b/configure
index acac0dbf498a767a37368186b913fcf494c4efb9..59885a11436feae9abe128ccabd78b9b9cf50cb5 100755
--- a/configure
+++ b/configure
@@ -20539,6 +20539,8 @@ ac_config_files="$ac_config_files dlls/glu32/Makefile"
 
 ac_config_files="$ac_config_files dlls/gphoto2.ds/Makefile"
 
+ac_config_files="$ac_config_files dlls/hal/Makefile"
+
 ac_config_files="$ac_config_files dlls/hhctrl.ocx/Makefile"
 
 ac_config_files="$ac_config_files dlls/hid/Makefile"
@@ -21692,6 +21694,7 @@ do
     "dlls/gdi32/tests/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/gdi32/tests/Makefile" ;;
     "dlls/glu32/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/glu32/Makefile" ;;
     "dlls/gphoto2.ds/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/gphoto2.ds/Makefile" ;;
+    "dlls/hal/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/hal/Makefile" ;;
     "dlls/hhctrl.ocx/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/hhctrl.ocx/Makefile" ;;
     "dlls/hid/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/hid/Makefile" ;;
     "dlls/hlink/Makefile") CONFIG_FILES="$CONFIG_FILES dlls/hlink/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 65157b25c19334bd270dc9a8e9ff341dc4d583b7..4edb7fb7ad828bf78825b9c2dcb93760179521d2 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1565,6 +1565,7 @@ AC_CONFIG_FILES([dlls/gdi32/Makefile])
 AC_CONFIG_FILES([dlls/gdi32/tests/Makefile])
 AC_CONFIG_FILES([dlls/glu32/Makefile])
 AC_CONFIG_FILES([dlls/gphoto2.ds/Makefile])
+AC_CONFIG_FILES([dlls/hal/Makefile])
 AC_CONFIG_FILES([dlls/hhctrl.ocx/Makefile])
 AC_CONFIG_FILES([dlls/hid/Makefile])
 AC_CONFIG_FILES([dlls/hlink/Makefile])
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index 198f7e53af1f9c8590ab5beff971114b973c8772..159bb2da5bab6b54dffa181f7fc940a779c71f5d 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -73,6 +73,7 @@ BASEDIRS = \
 	dxdiagn \
 	gdi32 \
 	gphoto2.ds \
+	hal \
 	hhctrl.ocx \
 	hid \
 	hlink \
diff --git a/dlls/hal/Makefile.in b/dlls/hal/Makefile.in
new file mode 100644
index 0000000000000000000000000000000000000000..b382cffcddf36ac561e46663805516950ec528bd
--- /dev/null
+++ b/dlls/hal/Makefile.in
@@ -0,0 +1,10 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ../..
+SRCDIR    = @srcdir@
+VPATH     = @srcdir@
+MODULE    = hal.dll
+IMPORTS   = kernel32 ntdll
+
+@MAKE_DLL_RULES@
+
+@DEPENDENCIES@  # everything below this line is overwritten by make depend
diff --git a/dlls/hal/hal.spec b/dlls/hal/hal.spec
new file mode 100644
index 0000000000000000000000000000000000000000..5c5fc5f2b1dbd9b4c44fd313453550ead5666b0f
--- /dev/null
+++ b/dlls/hal/hal.spec
@@ -0,0 +1,92 @@
+@ stub ExAcquireFastMutex
+@ stub ExReleaseFastMutex
+@ stub ExTryToAcquireFastMutex
+@ stub HalClearSoftwareInterrupt
+@ stub HalRequestSoftwareInterrupt
+@ stub HalSystemVectorDispatchEntry
+@ stub KeAcquireInStackQueuedSpinLock
+@ stub KeAcquireInStackQueuedSpinLockRaiseToSynch
+@ stub KeAcquireQueuedSpinLock
+@ stub KeAcquireQueuedSpinLockRaiseToSynch
+@ stub KeAcquireSpinLockRaiseToSynch
+@ stub KeReleaseInStackQueuedSpinLock
+@ stub KeReleaseQueuedSpinLock
+@ stub KeTryToAcquireQueuedSpinLock
+@ stub KeTryToAcquireQueuedSpinLockRaiseToSynch
+@ stub KfAcquireSpinLock
+@ stub KfLowerIrql
+@ stub KfRaiseIrql
+@ stub KfReleaseSpinLock
+@ stub HalAcquireDisplayOwnership
+@ stub HalAdjustResourceList
+@ stub HalAllProcessorsStarted
+@ stub HalAllocateAdapterChannel
+@ stub HalAllocateCommonBuffer
+@ stub HalAllocateCrashDumpRegisters
+@ stub HalAssignSlotResources
+@ stub HalBeginSystemInterrupt
+@ stub HalCalibratePerformanceCounter
+@ stub HalDisableSystemInterrupt
+@ stub HalDisplayString
+@ stub HalEnableSystemInterrupt
+@ stub HalEndSystemInterrupt
+@ stub HalFlushCommonBuffer
+@ stub HalFreeCommonBuffer
+@ stub HalGetAdapter
+@ stub HalGetBusData
+@ stub HalGetBusDataByOffset
+@ stub HalGetEnvironmentVariable
+@ stub HalGetInterruptVector
+@ stub HalHandleNMI
+@ stub HalInitSystem
+@ stub HalInitializeProcessor
+@ stub HalMakeBeep
+@ stub HalProcessorIdle
+@ stub HalQueryDisplayParameters
+@ stub HalQueryRealTimeClock
+@ stub HalReadDmaCounter
+@ stub HalReportResourceUsage
+@ stub HalRequestIpi
+@ stub HalReturnToFirmware
+@ stub HalSetBusData
+@ stub HalSetBusDataByOffset
+@ stub HalSetDisplayParameters
+@ stub HalSetEnvironmentVariable
+@ stub HalSetProfileInterval
+@ stub HalSetRealTimeClock
+@ stub HalSetTimeIncrement
+@ stub HalStartNextProcessor
+@ stub HalStartProfileInterrupt
+@ stub HalStopProfileInterrupt
+@ stub HalTranslateBusAddress
+@ stub IoAssignDriveLetters
+@ stub IoFlushAdapterBuffers
+@ stub IoFreeAdapterChannel
+@ stub IoFreeMapRegisters
+@ stub IoMapTransfer
+@ stub IoReadPartitionTable
+@ stub IoSetPartitionInformation
+@ stub IoWritePartitionTable
+@ stub KdComPortInUse
+@ stub KeAcquireSpinLock
+@ stub KeFlushWriteBuffer
+@ stub KeGetCurrentIrql
+@ stub KeLowerIrql
+@ stub KeQueryPerformanceCounter
+@ stub KeRaiseIrql
+@ stub KeRaiseIrqlToDpcLevel
+@ stub KeRaiseIrqlToSynchLevel
+@ stub KeReleaseSpinLock
+@ stub KeStallExecutionProcessor
+@ stub READ_PORT_BUFFER_UCHAR
+@ stub READ_PORT_BUFFER_ULONG
+@ stub READ_PORT_BUFFER_USHORT
+@ stub READ_PORT_UCHAR
+@ stub READ_PORT_ULONG
+@ stub READ_PORT_USHORT
+@ stub WRITE_PORT_BUFFER_UCHAR
+@ stub WRITE_PORT_BUFFER_ULONG
+@ stub WRITE_PORT_BUFFER_USHORT
+@ stub WRITE_PORT_UCHAR
+@ stub WRITE_PORT_ULONG
+@ stub WRITE_PORT_USHORT