Author: tkreuzer Date: Sat Sep 26 23:32:53 2009 New Revision: 43173
URL: http://svn.reactos.org/svn/reactos?rev=43173&view=rev Log: Merge HAL changes 34743, 34812, 34839, 34917, 35515, 35771, 35902, 35904, 35905, 35906, 35942, 35947, 35948, 35949, 35953, 36013, 36388, 36389, 36570, 37873, 37991, 39151 from amd64 branch
Added: trunk/reactos/hal/hal/hal_amd64.def (with props) trunk/reactos/hal/halamd64/ - copied from r34743, branches/ros-amd64-bringup/reactos/hal/halamd64/ trunk/reactos/hal/halamd64/directory.rbuild - copied unchanged from r34812, branches/ros-amd64-bringup/reactos/hal/halamd64/directory.rbuild trunk/reactos/hal/halamd64/generic/ - copied from r34812, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/ trunk/reactos/hal/halamd64/generic/halinit.c - copied unchanged from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/halinit.c trunk/reactos/hal/halamd64/generic/irq.S - copied, changed from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/irq.S trunk/reactos/hal/halamd64/generic/misc.c - copied unchanged from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/misc.c trunk/reactos/hal/halamd64/generic/mps.S - copied unchanged from r35947, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/mps.S trunk/reactos/hal/halamd64/generic/systimer.S - copied unchanged from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/systimer.S trunk/reactos/hal/halamd64/include/ - copied from r34812, branches/ros-amd64-bringup/reactos/hal/halamd64/include/ trunk/reactos/hal/halamd64/include/bus.h - copied unchanged from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/include/bus.h trunk/reactos/hal/halamd64/up/ - copied from r34812, branches/ros-amd64-bringup/reactos/hal/halamd64/up/ trunk/reactos/hal/halamd64/up/processor.c - copied unchanged from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/up/processor.c trunk/reactos/hal/halx86/hal_generic_amd64.rbuild - copied, changed from r35905, branches/ros-amd64-bringup/reactos/hal/halx86/hal_generic_amd64.rbuild Modified: trunk/reactos/ (props changed) trunk/reactos/hal/hal.rbuild trunk/reactos/hal/hal/hal.c trunk/reactos/hal/hal/hal.rbuild trunk/reactos/hal/halamd64/generic/generic.rbuild trunk/reactos/hal/halamd64/include/hal.h trunk/reactos/hal/halamd64/include/halp.h trunk/reactos/hal/halamd64/up/halup.rbuild trunk/reactos/hal/halx86/generic/timer.c trunk/reactos/hal/halx86/include/apic.h trunk/reactos/hal/halx86/include/bus.h trunk/reactos/hal/halx86/include/hal.h trunk/reactos/hal/halx86/include/halp.h trunk/reactos/hal/halx86/mp/apic.c
Propchange: trunk/reactos/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Sat Sep 26 23:32:53 2009 @@ -1,1 +1,1 @@ -/branches/ros-amd64-bringup/reactos:35746,35789,36614,36930,38148,38151,38265,38268,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080 +/branches/ros-amd64-bringup/reactos:34743,34812,34839,34917,35515,35746,35771,35789,35902,35904-35906,35942,35947-35949,35953,36013,36388-36389,36570,36614,36930,37873,37991,38148,38151,38265,38268,39151,39333,39345,40991,41000,41027-41028,41050,41052,41082-41086,41549,43080
Modified: trunk/reactos/hal/hal.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal.rbuild?rev=43173&am... ============================================================================== --- trunk/reactos/hal/hal.rbuild [iso-8859-1] (original) +++ trunk/reactos/hal/hal.rbuild [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -26,4 +26,12 @@ <xi:include href="halarm/directory.rbuild" /> </directory> </if> + <if property="ARCH" value="amd64"> + <directory name="halx86"> + <xi:include href="halx86/hal_generic_amd64.rbuild" /> + </directory> + <directory name="halamd64"> + <xi:include href="halamd64/directory.rbuild" /> + </directory> + </if> </group>
Modified: trunk/reactos/hal/hal/hal.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal/hal.c?rev=43173&... ============================================================================== --- trunk/reactos/hal/hal/hal.c [iso-8859-1] (original) +++ trunk/reactos/hal/hal/hal.c [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -75,6 +75,7 @@ return Interval; }
+#ifndef _M_AMD64 VOID FASTCALL ExAcquireFastMutex( @@ -101,7 +102,7 @@
return TRUE; } - +#endif
VOID NTAPI @@ -466,7 +467,7 @@ VOID NTAPI HalRequestIpi( - ULONG Unknown) + KAFFINITY TargetSet) { UNIMPLEMENTED; } @@ -747,7 +748,7 @@ return 0; }
- +#ifndef _M_AMD64 VOID FASTCALL KeAcquireInStackQueuedSpinLock( @@ -776,6 +777,7 @@ { UNIMPLEMENTED; } +#endif
VOID NTAPI @@ -784,6 +786,7 @@ UNIMPLEMENTED; }
+#ifndef _M_AMD64 #undef KeGetCurrentIrql KIRQL NTAPI @@ -802,6 +805,7 @@ { UNIMPLEMENTED; } +#endif
LARGE_INTEGER @@ -818,6 +822,7 @@ return Value; }
+#ifndef _M_AMD64 #undef KeRaiseIrql VOID NTAPI @@ -847,7 +852,9 @@
return (KIRQL)0; } - +#endif + +#ifndef _M_AMD64 #undef KeReleaseSpinLock VOID NTAPI @@ -857,7 +864,7 @@ { UNIMPLEMENTED; } - +#endif
VOID NTAPI @@ -891,7 +898,7 @@ return FALSE; }
- +#if !defined(_M_AMD64) KIRQL FASTCALL KfAcquireSpinLock( @@ -931,8 +938,9 @@ { UNIMPLEMENTED; } - - +#endif + +#if !defined(_M_AMD64) VOID NTAPI READ_PORT_BUFFER_UCHAR( @@ -1058,6 +1066,7 @@ { UNIMPLEMENTED; } +#endif
KIRQL FASTCALL
Modified: trunk/reactos/hal/hal/hal.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal/hal.rbuild?rev=4317... ============================================================================== --- trunk/reactos/hal/hal/hal.rbuild [iso-8859-1] (original) +++ trunk/reactos/hal/hal/hal.rbuild [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -10,8 +10,8 @@ <file>hal.c</file> <file>hal.rc</file> </module> - </if> - <if property="ARCH" value="i386"> + </if> + <if property="ARCH" value="i386"> <module name="hal" type="kernelmodedll"> <importlibrary definition="hal.pspec" /> <include base="ntoskrnl">include</include> @@ -20,7 +20,7 @@ <file>hal.c</file> <file>hal.rc</file> </module> - </if> + </if> <if property="ARCH" value="i386"> <module ifnot="false" name="halupalias" type="alias" installbase="system32" installname="hal.dll" aliasof="halup"> </module> @@ -30,4 +30,14 @@ <if property="ARCH" value="powerpc"> <module name="halupalias" type="alias" installbase="system32" installname="hal.dll" aliasof="halppc_up"/> </if> + <if property="ARCH" value="amd64"> + <module name="hal" type="kernelmodedll"> + <importlibrary definition="hal_amd64.def" /> + <include base="ntoskrnl">include</include> + <library>ntoskrnl</library> + <define name="_NTHAL_" /> + <file>hal.c</file> + <file>hal.rc</file> + </module> + </if> </group>
Added: trunk/reactos/hal/hal/hal_amd64.def URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/hal/hal_amd64.def?rev=4... ============================================================================== --- trunk/reactos/hal/hal/hal_amd64.def (added) +++ trunk/reactos/hal/hal/hal_amd64.def [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -1,0 +1,86 @@ +; Hardware Abstraction Layer - ReactOS Operating System + +LIBRARY hal.dll + +EXPORTS +HalAcquireDisplayOwnership +HalAdjustResourceList +HalAllProcessorsStarted +HalAllocateAdapterChannel +HalAllocateCommonBuffer +HalAllocateCrashDumpRegisters +HalAssignSlotResources +;HalBugCheckSystem +HalCalibratePerformanceCounter +HalClearSoftwareInterrupt +;HalConvertDeviceIdtToIrql +;HalDisableInterrupt +HalDisplayString +;HalEnableInterrupt +;HalEnumerateEnvironmentVariablesEx +;HalEnumerateProcessors +HalFlushCommonBuffer +HalFreeCommonBuffer +HalGetAdapter +HalGetBusData +HalGetBusDataByOffset +HalGetEnvironmentVariable +;HalGetEnvironmentVariableEx +;HalGetInterruptTargetInformation +HalGetInterruptVector +;HalGetMessageRoutingInfo +;HalGetProcessorIdByNtNumber +;HalGetVectorInput +;HalHandleMcheck +HalHandleNMI +HalInitSystem +;HalInitializeBios +;HalInitializeOnResume +HalInitializeProcessor +;HalIsHyperThreadingEnabled +HalMakeBeep +HalProcessorIdle +HalQueryDisplayParameters +;HalQueryEnvironmentVariableInfoEx +;HalQueryMaximumProcessorCount +HalQueryRealTimeClock +HalReadDmaCounter +;HalRegisterDynamicProcessor +;HalRegisterErrataCallbacks +HalReportResourceUsage +HalRequestIpi +HalRequestSoftwareInterrupt +HalReturnToFirmware +;HalSendNMI +;HalSendSoftwareInterrupt +HalSetBusData +HalSetBusDataByOffset +HalSetDisplayParameters +HalSetEnvironmentVariable +;HalSetEnvironmentVariableEx +HalSetProfileInterval +HalSetRealTimeClock +HalSetTimeIncrement +;HalStartDynamicProcessor +HalStartNextProcessor +HalStartProfileInterrupt +HalStopProfileInterrupt +HalSystemVectorDispatchEntry +HalTranslateBusAddress +IoAssignDriveLetters +IoFlushAdapterBuffers +IoFreeAdapterChannel +IoFreeMapRegisters +IoMapTransfer +IoReadPartitionTable +IoSetPartitionInformation +IoWritePartitionTable +KdComPortInUse=_KdComPortInUse DATA +KeFlushWriteBuffer +KeQueryPerformanceCounter +KeStallExecutionProcessor +;x86BiosAllocateBuffer +;x86BiosCall +;x86BiosFreeBuffer +;x86BiosReadMemory +;x86BiosWriteMemory
Propchange: trunk/reactos/hal/hal/hal_amd64.def ------------------------------------------------------------------------------ svn:eol-style = native
Modified: trunk/reactos/hal/halamd64/generic/generic.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halamd64/generic/generi... ============================================================================== --- trunk/reactos/hal/halamd64/generic/generic.rbuild [iso-8859-1] (original) +++ trunk/reactos/hal/halamd64/generic/generic.rbuild [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -1,10 +1,16 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> -<module name="halamd64_generic" type="objectlibrary"> - <include base="halamd64_generic">../include</include> - <include base="ntoskrnl">include</include> - <define name="_DISABLE_TIDENTS" /> - <define name="_NTHAL_" /> - <file>hal.c</file> - <pch>../include/hal.h</pch> -</module> +<group> + <module name="hal_generic" type="objectlibrary"> + <include base="hal_generic">../include</include> + <include base="ntoskrnl">include</include> + <define name="_DISABLE_TIDENTS" /> + <define name="_NTHAL_" /> + <file>halinit.c</file> + <file>irq.S</file> + <file>misc.c</file> + <file>mps.S</file> + <file>systimer.S</file> + <pch>../include/hal.h</pch> + </module> +</group>
Copied: trunk/reactos/hal/halamd64/generic/irq.S (from r35905, branches/ros-amd64-bringup/reactos/hal/halamd64/generic/irq.S) URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halamd64/generic/irq.S?... ============================================================================== --- branches/ros-amd64-bringup/reactos/hal/halamd64/generic/irq.S [iso-8859-1] (original) +++ trunk/reactos/hal/halamd64/generic/irq.S [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -14,7 +14,7 @@ .macro UNIMPLEMENTED func jmp 2f 1: - .ascii "Sory, asm function " + .ascii "Sorry, asm function " .ascii func .ascii " is unimplemented!\n\0" 2: @@ -34,13 +34,44 @@ .globl _HalpInitPICs .func _HalpInitPICs _HalpInitPICs: -UNIMPLEMENTED "HalpInitPICs" + UNIMPLEMENTED "HalpInitPICs" +.endfunc
+.global _HalEnableInterrupt +.func _HalEnableInterrupt +_HalEnableInterrupt: + UNIMPLEMENTED "HalEnableInterrupt" .endfunc + +.global _HalDisableInterrupt +.func _HalDisableInterrupt +_HalDisableInterrupt: + UNIMPLEMENTED "HalDisableInterrupt" +.endfunc + +.global _HalRequestSoftwareInterrupt +.func _HalRequestSoftwareInterrupt +_HalRequestSoftwareInterrupt: + UNIMPLEMENTED "HalRequestSoftwareInterrupt" +.endfunc + +.global _HalSendSoftwareInterrupt +.func _HalSendSoftwareInterrupt +_HalSendSoftwareInterrupt: + UNIMPLEMENTED "HalSendSoftwareInterrupt" +.endfunc + +.global _HalEndSystemInterrupt +.func _HalEndSystemInterrupt +_HalEndSystemInterrupt: + UNIMPLEMENTED "HalEndSystemInterrupt" +.endfunc +
.globl _HalClearSoftwareInterrupt .func _HalClearSoftwareInterrupt _HalClearSoftwareInterrupt: + UNIMPLEMENTED "HalClearSoftwareInterrupt"
/* Get IRR mask */ mov eax, 1 @@ -52,42 +83,9 @@ ret .endfunc
-.globl _HalRequestSoftwareInterrupt -.func _HalRequestSoftwareInterrupt -_HalRequestSoftwareInterrupt: -UNIMPLEMENTED "HalRequestSoftwareInterrupt" -.endfunc - .globl _HalBeginSystemInterrupt .func _HalBeginSystemInterrupt _HalBeginSystemInterrupt: -UNIMPLEMENTED "HalBeginSystemInterrupt" + UNIMPLEMENTED "HalBeginSystemInterrupt" .endfunc
-.globl _HalpApcInterrupt -.func _HalpApcInterrupt -//TRAP_FIXUPS hapc_a, hapc_t, DoFixupV86, DoFixupAbios -_HalpApcInterrupt: -UNIMPLEMENTED "HalpApcInterrupt" -.endfunc - -.globl _HalpApcInterrupt2ndEntry -.func _HalpApcInterrupt2ndEntry -_HalpApcInterrupt2ndEntry: -UNIMPLEMENTED "HalpApcInterrupt2ndEntry" -.endfunc - -.globl _HalpDispatchInterrupt -.func _HalpDispatchInterrupt -//TRAP_FIXUPS hdpc_a, hdpc_t, DoFixupV86, DoFixupAbios -_HalpDispatchInterrupt: -UNIMPLEMENTED "HalpDispatchInterrupt" -.endfunc - - -.globl _HalpDispatchInterrupt2ndEntry -.func _HalpDispatchInterrupt2ndEntry -_HalpDispatchInterrupt2ndEntry: -UNIMPLEMENTED "HalpDispatchInterrupt2ndEntry" -.endfunc -
Modified: trunk/reactos/hal/halamd64/include/hal.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halamd64/include/hal.h?... ============================================================================== --- trunk/reactos/hal/halamd64/include/hal.h [iso-8859-1] (original) +++ trunk/reactos/hal/halamd64/include/hal.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -1,9 +1,9 @@ /* - * PROJECT: ReactOS HAL - * LICENSE: BSD - See COPYING.ARM in the top level directory - * FILE: hal/halarm/include/hal.h - * PURPOSE: Hardware Abstraction Layer Header - * PROGRAMMERS: ReactOS Portable Systems Group + * COPYRIGHT: See COPYING in the top level directory + * PROJECT: ReactOS Hardware Abstraction Layer + * FILE: hal/halx86/include/hal.h + * PURPOSE: HAL Header + * PROGRAMMER: Alex Ionescu (alex@relsoft.net) */
/* INCLUDES ******************************************************************/ @@ -28,14 +28,23 @@ #include <arc/arc.h> #include <iotypes.h> #include <kefuncs.h> -#include <intrin.h> #include <halfuncs.h> #include <iofuncs.h> #include <ldrtypes.h> #include <obfuncs.h>
+/* Internal kernel headers */ +#include "internal/pci.h" +#include "internal/i386/intrin_i.h" + /* Internal HAL Headers */ +//#include "apic.h" +#include "bus.h" +//#include "halirq.h" +//#include "haldma.h" #include "halp.h" +//#include "mps.h" +//#include "ioapic.h"
/* Helper Header */ #include <reactos/helper.h>
Modified: trunk/reactos/hal/halamd64/include/halp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halamd64/include/halp.h... ============================================================================== --- trunk/reactos/hal/halamd64/include/halp.h [iso-8859-1] (original) +++ trunk/reactos/hal/halamd64/include/halp.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -1,22 +1,172 @@ +/* + * + */ + #ifndef __INTERNAL_HAL_HAL_H #define __INTERNAL_HAL_HAL_H
-// -// ARM Headers -// -#include <internal/arm/ke.h> -#include <internal/arm/intrin_i.h> +#define HAL_APC_REQUEST 0 +#define HAL_DPC_REQUEST 1 + +/* CMOS Registers and Ports */ +#define CMOS_CONTROL_PORT (PUCHAR)0x70 +#define CMOS_DATA_PORT (PUCHAR)0x71 +#define RTC_REGISTER_A 0x0A +#define RTC_REGISTER_B 0x0B +#define RTC_REG_A_UIP 0x80 +#define RTC_REGISTER_CENTURY 0x32 + +/* Timer Registers and Ports */ +#define TIMER_CONTROL_PORT 0x43 +#define TIMER_DATA_PORT0 0x40 +#define TIMER_SC0 0 +#define TIMER_BOTH 0x30 +#define TIMER_MD2 0x4 + +/* Conversion functions */ +#define BCD_INT(bcd) \ + (((bcd & 0xF0) >> 4) * 10 + (bcd & 0x0F)) +#define INT_BCD(int) \ + (UCHAR)(((int / 10) << 4) + (int % 10)) + +/* adapter.c */ +PADAPTER_OBJECT NTAPI HalpAllocateAdapterEx(ULONG NumberOfMapRegisters,BOOLEAN IsMaster, BOOLEAN Dma32BitAddresses); + +/* bus.c */ +VOID NTAPI HalpInitNonBusHandler (VOID); + +/* irql.c */ +VOID NTAPI HalpInitPICs(VOID); + +/* udelay.c */ +VOID NTAPI HalpInitializeClock(VOID); + +/* pci.c */ +VOID HalpInitPciBus (VOID); + +/* dma.c */ +VOID HalpInitDma (VOID); + +/* Non-generic initialization */ +VOID HalpInitPhase0 (PLOADER_PARAMETER_BLOCK LoaderBlock); +VOID HalpInitPhase1(VOID); +VOID NTAPI HalpClockInterrupt(VOID);
// -// Versatile Peripherals +// KD Support // -#include <peripherals/pl011.h> -#include <peripherals/pl190.h> -#include <peripherals/sp804.h> +VOID +NTAPI +HalpCheckPowerButton( + VOID +); + +VOID +NTAPI +HalpRegisterKdSupportFunctions( + VOID +); + +NTSTATUS +NTAPI +HalpSetupPciDeviceForDebugging( + IN PVOID LoaderBlock, + IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice +); + +NTSTATUS +NTAPI +HalpReleasePciDeviceForDebugging( + IN OUT PDEBUG_DEVICE_DESCRIPTOR PciDevice +);
// -// WDK Hack +// Memory routines // -#define KdComPortInUse _KdComPortInUse +PVOID +NTAPI +HalpMapPhysicalMemory64( + IN PHYSICAL_ADDRESS PhysicalAddress, + IN ULONG NumberPage +); + +VOID +NTAPI +HalpUnmapVirtualAddress( + IN PVOID VirtualAddress, + IN ULONG NumberPages +); + +/* sysinfo.c */ +NTSTATUS +NTAPI +HaliQuerySystemInformation( + IN HAL_QUERY_INFORMATION_CLASS InformationClass, + IN ULONG BufferSize, + IN OUT PVOID Buffer, + OUT PULONG ReturnedLength +); + +NTSTATUS +NTAPI +HaliSetSystemInformation( + IN HAL_SET_INFORMATION_CLASS InformationClass, + IN ULONG BufferSize, + IN OUT PVOID Buffer +); + +// +// BIOS Routines +// +BOOLEAN +NTAPI +HalpBiosDisplayReset( + VOID +); + +ULONG +NTAPI +HalpBorrowTss( + VOID +); + +ULONG +NTAPI +HalpReturnTss( + ULONG SavedTss +); + +VOID +NTAPI +HalpBiosCall( + VOID +); + +VOID +NTAPI +HalpTrap0D( + VOID +); + +VOID +NTAPI +HalpTrap06( + VOID +); + +PDMA_ADAPTER +NTAPI +HalpGetDmaAdapter( + IN PVOID Context, + IN PDEVICE_DESCRIPTION DeviceDescription, + OUT PULONG NumberOfMapRegisters); + +VOID HaliInitBSP(VOID); +VOID HaliStartApplicationProcessor(ULONG Cpu, ULONG Stack); + +extern PVOID HalpRealModeStart; +extern PVOID HalpRealModeEnd; + +extern KSPIN_LOCK HalpSystemHardwareLock;
#endif /* __INTERNAL_HAL_HAL_H */
Modified: trunk/reactos/hal/halamd64/up/halup.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halamd64/up/halup.rbuil... ============================================================================== --- trunk/reactos/hal/halamd64/up/halup.rbuild [iso-8859-1] (original) +++ trunk/reactos/hal/halamd64/up/halup.rbuild [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -1,14 +1,16 @@ <?xml version="1.0"?> <!DOCTYPE module SYSTEM "../../../tools/rbuild/project.dtd"> -<module name="halarm_up" type="kernelmodedll" installbase="system32" installname="hal.dll"> - <importlibrary definition="../../hal/hal_amd64.def" /> +<module name="halup" type="kernelmodedll" installbase="system32" installname="hal.dll"> + <importlibrary base="hal" definition="hal_amd64.def" /> <bootstrap installbase="$(CDOUTPUT)" nameoncd="hal.dll" /> - <include base="halamd64_generic">../include</include> + <include base="halup">../include</include> <include base="ntoskrnl">include</include> <define name="_DISABLE_TIDENTS" /> <define name="_NTHAL_" /> - <library>halamd64_generic</library> + <library>hal_generic_amd64</library> + <library>hal_generic</library> <library>ntoskrnl</library> <file>halinit_up.c</file> <file>halup.rc</file> + <file>processor.c</file> </module>
Modified: trunk/reactos/hal/halx86/generic/timer.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/generic/timer.c?... ============================================================================== --- trunk/reactos/hal/halx86/generic/timer.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/generic/timer.c [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -48,7 +48,7 @@ PKPRCB Prcb = KeGetCurrentPrcb(); ULONG Increment; USHORT RollOver; - ULONG Flags; + ULONG_PTR Flags;
/* Check the CPU Type */ if (Prcb->CpuType <= 4) @@ -92,7 +92,7 @@ HalCalibratePerformanceCounter(IN volatile PLONG Count, IN ULONGLONG NewCount) { - ULONG Flags; + ULONG_PTR Flags;
/* Disable interrupts */ Flags = __readeflags();
Copied: trunk/reactos/hal/halx86/hal_generic_amd64.rbuild (from r35905, branches/ros-amd64-bringup/reactos/hal/halx86/hal_generic_amd64.rbuild) URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/hal_generic_amd6... ============================================================================== --- branches/ros-amd64-bringup/reactos/hal/halx86/hal_generic_amd64.rbuild [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/hal_generic_amd64.rbuild [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -13,13 +13,14 @@ <file>dma.c</file> <file>drive.c</file> <file>display.c</file> + <file>pci.c</file> <file>profil.c</file> <file>reboot.c</file> <file>sysinfo.c</file> <file>timer.c</file> </directory> <directory name="mp"> - <!-- file>apic.c</file --> + <file>apic.c</file> </directory> <directory name="include"> <pch>hal.h</pch>
Modified: trunk/reactos/hal/halx86/include/apic.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/apic.h?r... ============================================================================== --- trunk/reactos/hal/halx86/include/apic.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/apic.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -5,7 +5,11 @@ #ifndef __INTERNAL_HAL_APIC_H #define __INTERNAL_HAL_APIC_H
+#ifdef _M_AMD64 +#define APIC_DEFAULT_BASE 0xfffffffffee00000ULL; +#else #define APIC_DEFAULT_BASE 0xFEE00000 /* Default Local APIC Base Register Address */ +#endif
/* APIC Register Address Map */ #define APIC_ID 0x0020 /* Local APIC ID Register (R/W) */ @@ -115,30 +119,6 @@ #define APIC_TDCR_128 0x0A #define APIC_TDCR_1 0x0B
-#define APIC_LVT_VECTOR (0xFF << 0) /* Vector */ -#define APIC_LVT_DS (0x1 << 12) /* Delivery Status */ -#define APIC_LVT_REMOTE_IRR (0x1 << 14) /* Remote IRR */ -#define APIC_LVT_LEVEL_TRIGGER (0x1 << 15) /* Lvel Triggered */ -#define APIC_LVT_MASKED (0x1 << 16) /* Mask */ -#define APIC_LVT_PERIODIC (0x1 << 17) /* Timer Mode */ - -#define APIC_LVT3_DM (0x7 << 8) -#define APIC_LVT3_IIPP (0x1 << 13) -#define APIC_LVT3_TM (0x1 << 15) -#define APIC_LVT3_MASKED (0x1 << 16) -#define APIC_LVT3_OS (0x1 << 17) - -#define APIC_TDCR_TMBASE (0x1 << 2) -#define APIC_TDCR_MASK 0x0F -#define APIC_TDCR_2 0x00 -#define APIC_TDCR_4 0x01 -#define APIC_TDCR_8 0x02 -#define APIC_TDCR_16 0x03 -#define APIC_TDCR_32 0x08 -#define APIC_TDCR_64 0x09 -#define APIC_TDCR_128 0x0A -#define APIC_TDCR_1 0x0B - #define APIC_TARGET_SELF 0x100 #define APIC_TARGET_ALL 0x200 #define APIC_TARGET_ALL_BUT_SELF 0x300 @@ -206,7 +186,7 @@ { PULONG p;
- p = (PULONG)((ULONG)APICBase + Offset); + p = (PULONG)((ULONG_PTR)APICBase + Offset); return *p; }
@@ -216,7 +196,7 @@ { PULONG p;
- p = (PULONG)((ULONG)APICBase + Offset); + p = (PULONG)((ULONG_PTR)APICBase + Offset);
*p = Value; } @@ -230,7 +210,7 @@ lastregw[CPU] = Offset; lastvalw[CPU] = Value;
- p = (PULONG)((ULONG)APICBase + Offset); + p = (PULONG)((ULONG_PTR)APICBase + Offset);
*p = Value; } @@ -241,7 +221,7 @@ { PULONG p;
- p = (PULONG)((ULONG)APICBase + Offset); + p = (PULONG)((ULONG_PTR)APICBase + Offset); return *p; } #else @@ -253,7 +233,7 @@ lastregr[CPU] = Offset; lastvalr[CPU] = 0;
- p = (PULONG)((ULONG)APICBase + Offset); + p = (PULONG)((ULONG_PTR)APICBase + Offset);
lastvalr[CPU] = *p; return lastvalr[CPU];
Modified: trunk/reactos/hal/halx86/include/bus.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/bus.h?re... ============================================================================== --- trunk/reactos/hal/halx86/include/bus.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/bus.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -43,7 +43,7 @@ #define TYPE1_READ(x, y) \ TYPE1_START(x, y) \ *((POINTER_TO_(y))Buffer) = \ - READ_FROM(y)((POINTER_TO_(y))(BusData->Config.Type1.Data + i)); \ + READ_FROM(y)((POINTER_TO_(y))(ULONG_PTR)(BusData->Config.Type1.Data + i)); \ TYPE1_END(y)
// @@ -51,7 +51,7 @@ // #define TYPE1_WRITE(x, y) \ TYPE1_START(x, y) \ - WRITE_TO(y)((POINTER_TO_(y))(BusData->Config.Type1.Data + i), \ + WRITE_TO(y)((POINTER_TO_(y))(ULONG_PTR)(BusData->Config.Type1.Data + i), \ *((POINTER_TO_(y))Buffer)); \ TYPE1_END(y)
@@ -69,7 +69,7 @@ #define TYPE2_READ(x, y) \ TYPE2_START(x, y) \ *((POINTER_TO_(y))Buffer) = \ - READ_FROM(y)((POINTER_TO_(y))(ULONG)PciCfg->u.AsUSHORT); \ + READ_FROM(y)((POINTER_TO_(y))(ULONG_PTR)PciCfg->u.AsUSHORT); \ TYPE2_END(y)
// @@ -77,7 +77,7 @@ // #define TYPE2_WRITE(x, y) \ TYPE2_START(x, y) \ - WRITE_TO(y)((POINTER_TO_(y))(ULONG)PciCfg->u.AsUSHORT, \ + WRITE_TO(y)((POINTER_TO_(y))(ULONG_PTR)PciCfg->u.AsUSHORT, \ *((POINTER_TO_(y))Buffer)); \ TYPE2_END(y)
Modified: trunk/reactos/hal/halx86/include/hal.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/hal.h?re... ============================================================================== --- trunk/reactos/hal/halx86/include/hal.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/hal.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -34,7 +34,11 @@
/* Internal kernel headers */ #include "internal/pci.h" +#ifdef _M_AMD64 +#include "internal/amd64/intrin_i.h" +#else #include "internal/i386/intrin_i.h" +#endif
/* Internal HAL Headers */ #include "apic.h"
Modified: trunk/reactos/hal/halx86/include/halp.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/include/halp.h?r... ============================================================================== --- trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/include/halp.h [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -154,6 +154,17 @@ VOID );
+#ifdef _M_AMD64 +#define KfLowerIrql KeLowerIrql +#ifndef CONFIG_SMP +/* On UP builds, spinlocks don't exist at IRQL >= DISPATCH */ +#define KiAcquireSpinLock(SpinLock) +#define KiReleaseSpinLock(SpinLock) +#define KfAcquireSpinLock(SpinLock) KfRaiseIrql(DISPATCH_LEVEL); +#define KfReleaseSpinLock(SpinLock, OldIrql) KeLowerIrql(OldIrql); +#endif // !CONFIG_SMP +#endif // _M_AMD64 + extern PVOID HalpRealModeStart; extern PVOID HalpRealModeEnd;
Modified: trunk/reactos/hal/halx86/mp/apic.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/mp/apic.c?rev=43... ============================================================================== --- trunk/reactos/hal/halx86/mp/apic.c [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/mp/apic.c [iso-8859-1] Sat Sep 26 23:32:53 2009 @@ -709,6 +709,9 @@ MpsIRQTrapFrameToTrapFrame(PKIRQ_TRAPFRAME IrqTrapFrame, PKTRAP_FRAME TrapFrame) { +#ifdef _M_AMD64 + UNIMPLEMENTED; +#else TrapFrame->SegGs = (USHORT)IrqTrapFrame->Gs; TrapFrame->SegFs = (USHORT)IrqTrapFrame->Fs; TrapFrame->SegEs = (USHORT)IrqTrapFrame->Es; @@ -724,6 +727,7 @@ TrapFrame->Eip = IrqTrapFrame->Eip; TrapFrame->SegCs = IrqTrapFrame->Cs; TrapFrame->EFlags = IrqTrapFrame->Eflags; +#endif }
VOID @@ -798,7 +802,7 @@
APICSetupLVTT(1000000000);
- TSCPresent = ((PKIPCR)KeGetPcr())->PrcbData.FeatureBits & KF_RDTSC ? TRUE : FALSE; + TSCPresent = KeGetCurrentPrcb()->FeatureBits & KF_RDTSC ? TRUE : FALSE;
/* * The timer chip counts down to zero. Let's wait @@ -827,7 +831,7 @@ DPRINT("CPU clock speed is %ld.%04ld MHz.\n", CPUMap[CPU].CoreSpeed/1000000, CPUMap[CPU].CoreSpeed%1000000); - ((PKIPCR)KeGetPcr())->PrcbData.MHz = CPUMap[CPU].CoreSpeed/1000000; + KeGetCurrentPrcb()->MHz = CPUMap[CPU].CoreSpeed/1000000; }
CPUMap[CPU].BusSpeed = (HZ * (long)(tt1 - tt2) * APIC_DIVISOR); @@ -843,8 +847,25 @@ }
VOID -SetInterruptGate(ULONG index, ULONG address) -{ +SetInterruptGate(ULONG index, ULONG_PTR address) +{ +#ifdef _M_AMD64 + KIDTENTRY64 *idt; + + idt = &KeGetPcr()->IdtBase[index]; + + idt->OffsetLow = address & 0xffff; + idt->Selector = KGDT_64_R0_CODE; + idt->IstIndex = 0; + idt->Reserved0 = 0; + idt->Type = 0x0e; + idt->Dpl = 0; + idt->Present = 1; + idt->OffsetMiddle = (address >> 16) & 0xffff; + idt->OffsetHigh = address >> 32; + idt->Reserved1 = 0; + idt->Alignment = 0; +#else KIDTENTRY *idt; KIDT_ACCESS Access;
@@ -860,6 +881,7 @@ idt->Selector = KGDT_R0_CODE; idt->Access = Access.Value; idt->ExtendedOffset = (USHORT)(address >> 16); +#endif }
VOID HaliInitBSP(VOID) @@ -880,11 +902,11 @@ BSPInitialized = TRUE;
/* Setup interrupt handlers */ - SetInterruptGate(LOCAL_TIMER_VECTOR, (ULONG)MpsTimerInterrupt); - SetInterruptGate(ERROR_VECTOR, (ULONG)MpsErrorInterrupt); - SetInterruptGate(SPURIOUS_VECTOR, (ULONG)MpsSpuriousInterrupt); + SetInterruptGate(LOCAL_TIMER_VECTOR, (ULONG_PTR)MpsTimerInterrupt); + SetInterruptGate(ERROR_VECTOR, (ULONG_PTR)MpsErrorInterrupt); + SetInterruptGate(SPURIOUS_VECTOR, (ULONG_PTR)MpsSpuriousInterrupt); #ifdef CONFIG_SMP - SetInterruptGate(IPI_VECTOR, (ULONG)MpsIpiInterrupt); + SetInterruptGate(IPI_VECTOR, (ULONG_PTR)MpsIpiInterrupt); #endif DPRINT("APIC is mapped at 0x%X\n", APICBase);
@@ -913,18 +935,18 @@ CommonBase = (PULONG)COMMON_AREA;
/* Copy bootstrap code to common area */ - memcpy((PVOID)((ULONG)CommonBase + PAGE_SIZE), + memcpy((PVOID)((ULONG_PTR)CommonBase + PAGE_SIZE), &APstart, - (ULONG)&APend - (ULONG)&APstart + 1); + (ULONG_PTR)&APend - (ULONG_PTR)&APstart + 1);
/* Set shutdown code */ CMOS_WRITE(0xF, 0xA);
/* Set warm reset vector */ - ps = (PUSHORT)((ULONG)BIOSBase + 0x467); + ps = (PUSHORT)((ULONG_PTR)BIOSBase + 0x467); *ps = (COMMON_AREA + PAGE_SIZE) & 0xF;
- ps = (PUSHORT)((ULONG)BIOSBase + 0x469); + ps = (PUSHORT)((ULONG_PTR)BIOSBase + 0x469); *ps = (COMMON_AREA + PAGE_SIZE) >> 4; #endif