diff --git a/reactos/hal/CMakeLists.txt b/reactos/hal/CMakeLists.txt index ed1833876af..3d4b3b2efe7 100644 --- a/reactos/hal/CMakeLists.txt +++ b/reactos/hal/CMakeLists.txt @@ -1,5 +1,5 @@ -if(ARCH MATCHES i386 OR ARCH MATCHES amd64) +if((ARCH MATCHES i386) OR (ARCH MATCHES amd64)) add_subdirectory(halx86) elseif(ARCH MATCHES arm) # add_subdirectory(halarm) diff --git a/reactos/hal/halx86/CMakeLists.txt b/reactos/hal/halx86/CMakeLists.txt index bdb5ede106e..a84aa9fdc2e 100644 --- a/reactos/hal/halx86/CMakeLists.txt +++ b/reactos/hal/halx86/CMakeLists.txt @@ -129,7 +129,36 @@ if(ARCH MATCHES i386) add_dependencies(mini_hal psdk bugcodes asm) elseif(ARCH MATCHES amd64) -#TBD + + spec2def(hal.dll ../hal.spec) + + list(APPEND HAL_SOURCE + ${HAL_GENERIC_SOURCE} + ${HAL_GENERIC_PCAT_SOURCE} + ${HAL_GENERIC_UP_SOURCE} + up/halinit_up.c + up/halup.rc + generic/spinlock.c + amd64/x86bios.c + amd64/halinit.c + amd64/stubs.c + amd64/systimer.S + amd64/processor.c + ${CMAKE_CURRENT_BINARY_DIR}/hal.def) + + # hal + add_library(hal SHARED ${HAL_SOURCE}) + add_pch(hal include/hal.h) + add_dependencies(hal psdk bugcodes) + + set_entrypoint(hal HalInitSystem) + set_subsystem(hal native) + set_image_base(hal 0x00010000) + add_importlibs(hal ntoskrnl) + target_link_libraries(hal libcntpr) + + add_cd_file(TARGET hal DESTINATION reactos/system32 NO_CAB FOR all) + endif() add_importlib_target(../hal.spec) diff --git a/reactos/hal/halx86/amd64/systimer.S b/reactos/hal/halx86/amd64/systimer.S index 47d2a844b23..d4ed099c968 100644 --- a/reactos/hal/halx86/amd64/systimer.S +++ b/reactos/hal/halx86/amd64/systimer.S @@ -8,21 +8,19 @@ /* INCLUDES ******************************************************************/ #include - #include /* GLOBALS *******************************************************************/ .data -.global MsgUnimplemented +PUBLIC MsgUnimplemented MsgUnimplemented: .asciz "WARNING: %s at %s:%d is UNIMPLEMENTED!\n" /* FUNCTIONS *****************************************************************/ -.text .code64 PUBLIC HalpCalibrateStallExecution@0 @@ -40,7 +38,7 @@ KeStallExecutionProcessor: jecxz Done /* Multiply by the stall factor */ - mov eax, gs:[KPCR_STALL_SCALE_FACTOR] + mov eax, gs:[PcStallScaleFactor] mul ecx /* Align to 16 bytes */ @@ -71,14 +69,14 @@ HalpQuery8254Counter: /* Set timer data */ mov al, 0 - out 0x43, al + out HEX(43), al jmp $+2 /* Read current timer */ - in al, 0x40 + in al, HEX(40) jmp $+2 movzx ecx, al - in al, 0x40 + in al, HEX(40) mov ch, al /* Return it and restore interrupt state */