From 6eaae6d72970a7d1a5acaaabd4597daec23f1f34 Mon Sep 17 00:00:00 2001 From: Dmitry Borisov Date: Sun, 29 Mar 2026 12:12:58 +0600 Subject: [PATCH] [HAL] Make HalpCalibrateStallExecution discardable - Discard the RTC interrupt handler for MSVC builds. Unfortunately GAS doesn't have such a feature - Remove the unused systimer.S file from MiniHAL compilation --- hal/halx86/apic/tsc.c | 1 + hal/halx86/generic/systimer.S | 18 ++++++++++++------ hal/halx86/include/halp.h | 1 + hal/halx86/minihal/CMakeLists.txt | 3 +-- hal/halx86/pc98/delay.c | 1 + 5 files changed, 16 insertions(+), 8 deletions(-) diff --git a/hal/halx86/apic/tsc.c b/hal/halx86/apic/tsc.c index 9963156caac..2de7406097a 100644 --- a/hal/halx86/apic/tsc.c +++ b/hal/halx86/apic/tsc.c @@ -115,6 +115,7 @@ HalpInitializeTsc(VOID) } +CODE_SEG("INIT") VOID NTAPI HalpCalibrateStallExecution(VOID) diff --git a/hal/halx86/generic/systimer.S b/hal/halx86/generic/systimer.S index be41fe1f179..0f19957db13 100644 --- a/hal/halx86/generic/systimer.S +++ b/hal/halx86/generic/systimer.S @@ -11,10 +11,6 @@ #include -EXTERN _HalpAcquireCmosSpinLock@0:PROC -EXTERN _HalpReleaseCmosSpinLock@0:PROC -EXTERN _DbgBreakPoint@0:PROC - #define PIC1_BASE HEX(20) /* IO base address for master PIC */ #define PIC2_BASE HEX(A0) /* IO base address for slave PIC */ #define PIC1_COMMAND PIC1_BASE @@ -38,6 +34,15 @@ EXTERN _DbgBreakPoint@0:PROC /* FUNCTIONS *****************************************************************/ .code + +#ifdef _USE_ML +INIT_ASM SEGMENT PARA PUBLIC USE32 READ WRITE EXECUTE DISCARD +#endif + +EXTERN _HalpAcquireCmosSpinLock@0:PROC +EXTERN _HalpReleaseCmosSpinLock@0:PROC +EXTERN _DbgBreakPoint@0:PROC + PUBLIC _HalpCalibrateStallExecution@0 _HalpCalibrateStallExecution@0: @@ -340,8 +345,10 @@ AndItsNotYou: pop ebp ret +#ifdef _USE_ML +INIT_ASM ENDS +#endif -#ifndef _MINIHAL_ PUBLIC _KeStallExecutionProcessor@4 _KeStallExecutionProcessor@4: @@ -367,6 +374,5 @@ SubtractLoop: Done: /* Return */ ret 4 -#endif END diff --git a/hal/halx86/include/halp.h b/hal/halx86/include/halp.h index 9976ee2e3d1..cc1acd8e9c4 100644 --- a/hal/halx86/include/halp.h +++ b/hal/halx86/include/halp.h @@ -254,6 +254,7 @@ typedef struct _HALP_ROLLOVER ULONG Increment; } HALP_ROLLOVER, *PHALP_ROLLOVER; +CODE_SEG("INIT") VOID NTAPI HalpCalibrateStallExecution(VOID); diff --git a/hal/halx86/minihal/CMakeLists.txt b/hal/halx86/minihal/CMakeLists.txt index 13faf2ee5fc..a89d11cc7ec 100644 --- a/hal/halx86/minihal/CMakeLists.txt +++ b/hal/halx86/minihal/CMakeLists.txt @@ -41,8 +41,7 @@ else() ../generic/reboot.c) endif() -add_asm_files(mini_hal_asm ../generic/systimer.S) -add_library(mini_hal ${MINI_HAL_SOURCE} ${mini_hal_asm}) +add_library(mini_hal ${MINI_HAL_SOURCE}) target_compile_definitions(mini_hal PRIVATE _BLDR_ _NTSYSTEM_) add_dependencies(mini_hal psdk bugcodes asm) add_pch(mini_hal ../include/hal.h MINI_HAL_SOURCE) diff --git a/hal/halx86/pc98/delay.c b/hal/halx86/pc98/delay.c index 37ab5776829..7561a1caff7 100644 --- a/hal/halx86/pc98/delay.c +++ b/hal/halx86/pc98/delay.c @@ -14,6 +14,7 @@ /* PRIVATE FUNCTIONS *********************************************************/ +CODE_SEG("INIT") VOID NTAPI HalpCalibrateStallExecution(VOID)