https://git.reactos.org/?p=reactos.git;a=commitdiff;h=10e7643c808e99acc387b3...
commit 10e7643c808e99acc387b380df567784e567d243 Author: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org AuthorDate: Thu Jun 15 17:04:53 2023 +0200 Commit: Hermès Bélusca-Maïto hermes.belusca-maito@reactos.org CommitDate: Mon Nov 13 19:19:40 2023 +0100
[FREELDR:NTLDR] Pass boot-time detection options to HwDetect routines.
Will be used for supporting /NOSERIALMICE, /FASTDETECT (NT 5+) switches (see PR #5886), as well as the undocumented /PCIENUM option. --- boot/freeldr/freeldr/arch/arm/macharm.c | 5 +++-- boot/freeldr/freeldr/arch/i386/pc/machpc.c | 3 ++- boot/freeldr/freeldr/arch/i386/pc98/pc98hw.c | 3 ++- boot/freeldr/freeldr/arch/i386/xbox/machxbox.c | 3 ++- boot/freeldr/freeldr/arch/uefi/uefihw.c | 3 ++- boot/freeldr/freeldr/include/arch/i386/machpc98.h | 6 +++++- boot/freeldr/freeldr/include/arch/i386/machxbox.h | 5 ++++- boot/freeldr/freeldr/include/arch/pc/machpc.h | 6 +++++- boot/freeldr/freeldr/include/arch/uefi/machuefi.h | 3 ++- boot/freeldr/freeldr/include/machine.h | 9 ++++++--- boot/freeldr/freeldr/ntldr/winldr.c | 2 +- 11 files changed, 34 insertions(+), 14 deletions(-)
diff --git a/boot/freeldr/freeldr/arch/arm/macharm.c b/boot/freeldr/freeldr/arch/arm/macharm.c index 2179a59bd3a..e059ee07948 100644 --- a/boot/freeldr/freeldr/arch/arm/macharm.c +++ b/boot/freeldr/freeldr/arch/arm/macharm.c @@ -94,7 +94,8 @@ ArmPrepareForReactOS(VOID) }
PCONFIGURATION_COMPONENT_DATA -ArmHwDetect(VOID) +ArmHwDetect( + _In_opt_ PCSTR Options) { ARM_CACHE_REGISTER CacheReg;
@@ -137,7 +138,7 @@ BOOLEAN ArmInitializeBootDevices(VOID) { /* Emulate old behavior */ - if (ArmHwDetect() == NULL) + if (ArmHwDetect(NULL) == NULL) return FALSE;
/* On ARM platforms, the loader is always in RAM */ diff --git a/boot/freeldr/freeldr/arch/i386/pc/machpc.c b/boot/freeldr/freeldr/arch/i386/pc/machpc.c index 4bef802f667..c93bb23d945 100644 --- a/boot/freeldr/freeldr/arch/i386/pc/machpc.c +++ b/boot/freeldr/freeldr/arch/i386/pc/machpc.c @@ -1628,7 +1628,8 @@ PcGetFloppyCount(VOID) #endif
PCONFIGURATION_COMPONENT_DATA -PcHwDetect(VOID) +PcHwDetect( + _In_opt_ PCSTR Options) { PCONFIGURATION_COMPONENT_DATA SystemKey; ULONG BusNumber = 0; diff --git a/boot/freeldr/freeldr/arch/i386/pc98/pc98hw.c b/boot/freeldr/freeldr/arch/i386/pc98/pc98hw.c index a404237a6c0..98264eec03c 100644 --- a/boot/freeldr/freeldr/arch/i386/pc98/pc98hw.c +++ b/boot/freeldr/freeldr/arch/i386/pc98/pc98hw.c @@ -1180,7 +1180,8 @@ DetectPnpBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber) }
PCONFIGURATION_COMPONENT_DATA -Pc98HwDetect(VOID) +Pc98HwDetect( + _In_opt_ PCSTR Options) { PCONFIGURATION_COMPONENT_DATA SystemKey; ULONG BusNumber = 0; diff --git a/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c b/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c index 0574cd307a5..4315e228598 100644 --- a/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c +++ b/boot/freeldr/freeldr/arch/i386/xbox/machxbox.c @@ -263,7 +263,8 @@ XboxGetFloppyCount(VOID) }
PCONFIGURATION_COMPONENT_DATA -XboxHwDetect(VOID) +XboxHwDetect( + _In_opt_ PCSTR Options) { PCONFIGURATION_COMPONENT_DATA SystemKey; ULONG BusNumber = 0; diff --git a/boot/freeldr/freeldr/arch/uefi/uefihw.c b/boot/freeldr/freeldr/arch/uefi/uefihw.c index 8dcf9602274..f671446b474 100644 --- a/boot/freeldr/freeldr/arch/uefi/uefihw.c +++ b/boot/freeldr/freeldr/arch/uefi/uefihw.c @@ -123,7 +123,8 @@ DetectAcpiBios(PCONFIGURATION_COMPONENT_DATA SystemKey, ULONG *BusNumber) }
PCONFIGURATION_COMPONENT_DATA -UefiHwDetect(VOID) +UefiHwDetect( + _In_opt_ PCSTR Options) { PCONFIGURATION_COMPONENT_DATA SystemKey; ULONG BusNumber = 0; diff --git a/boot/freeldr/freeldr/include/arch/i386/machpc98.h b/boot/freeldr/freeldr/include/arch/i386/machpc98.h index 07881b83319..23e268e9d98 100644 --- a/boot/freeldr/freeldr/include/arch/i386/machpc98.h +++ b/boot/freeldr/freeldr/include/arch/i386/machpc98.h @@ -80,7 +80,11 @@ VOID Pc98VideoPrepareForReactOS(VOID); VOID Pc98PrepareForReactOS(VOID); TIMEINFO* Pc98GetTime(VOID); BOOLEAN Pc98InitializeBootDevices(VOID); -PCONFIGURATION_COMPONENT_DATA Pc98HwDetect(VOID); + +PCONFIGURATION_COMPONENT_DATA +Pc98HwDetect( + _In_opt_ PCSTR Options); + VOID Pc98HwIdle(VOID);
/* pcmem.c */ diff --git a/boot/freeldr/freeldr/include/arch/i386/machxbox.h b/boot/freeldr/freeldr/include/arch/i386/machxbox.h index 5b21d8515e9..4d3a4510263 100644 --- a/boot/freeldr/freeldr/include/arch/i386/machxbox.h +++ b/boot/freeldr/freeldr/include/arch/i386/machxbox.h @@ -58,7 +58,10 @@ ULONG XboxDiskGetCacheableBlockCount(UCHAR DriveNumber);
TIMEINFO* XboxGetTime(VOID);
-PCONFIGURATION_COMPONENT_DATA XboxHwDetect(VOID); +PCONFIGURATION_COMPONENT_DATA +XboxHwDetect( + _In_opt_ PCSTR Options); + VOID XboxHwIdle(VOID);
VOID XboxSetLED(PCSTR Pattern); diff --git a/boot/freeldr/freeldr/include/arch/pc/machpc.h b/boot/freeldr/freeldr/include/arch/pc/machpc.h index 35bf0e904c8..2263d75778c 100644 --- a/boot/freeldr/freeldr/include/arch/pc/machpc.h +++ b/boot/freeldr/freeldr/include/arch/pc/machpc.h @@ -67,7 +67,11 @@ ULONG PcDiskGetCacheableBlockCount(UCHAR DriveNumber); TIMEINFO* PcGetTime(VOID);
BOOLEAN PcInitializeBootDevices(VOID); -PCONFIGURATION_COMPONENT_DATA PcHwDetect(VOID); + +PCONFIGURATION_COMPONENT_DATA +PcHwDetect( + _In_opt_ PCSTR Options); + VOID PcHwIdle(VOID);
extern BIOS_MEMORY_MAP PcBiosMemoryMap[]; diff --git a/boot/freeldr/freeldr/include/arch/uefi/machuefi.h b/boot/freeldr/freeldr/include/arch/uefi/machuefi.h index ba878e30972..6df376b1494 100644 --- a/boot/freeldr/freeldr/include/arch/uefi/machuefi.h +++ b/boot/freeldr/freeldr/include/arch/uefi/machuefi.h @@ -106,7 +106,8 @@ BOOLEAN UefiInitializeBootDevices(VOID);
PCONFIGURATION_COMPONENT_DATA -UefiHwDetect(VOID); +UefiHwDetect( + _In_opt_ PCSTR Options);
VOID UefiPrepareForReactOS(VOID); diff --git a/boot/freeldr/freeldr/include/machine.h b/boot/freeldr/freeldr/include/machine.h index cfe40a2a0bc..7e6e5c249be 100644 --- a/boot/freeldr/freeldr/include/machine.h +++ b/boot/freeldr/freeldr/include/machine.h @@ -74,7 +74,7 @@ typedef struct tagMACHVTBL
// NOTE: Not in the machine.c ... BOOLEAN (*InitializeBootDevices)(VOID); - PCONFIGURATION_COMPONENT_DATA (*HwDetect)(VOID); + PCONFIGURATION_COMPONENT_DATA (*HwDetect)(_In_opt_ PCSTR Options); VOID (*HwIdle)(VOID); } MACHVTBL, *PMACHVTBL;
@@ -133,8 +133,11 @@ VOID MachInit(const char *CmdLine); #define MachInitializeBootDevices() \ MachVtbl.InitializeBootDevices()
-#define MachHwDetect() MachVtbl.HwDetect() -#define MachHwIdle() MachVtbl.HwIdle() +#define MachHwDetect(Options) \ + MachVtbl.HwDetect(Options) + +#define MachHwIdle() \ + MachVtbl.HwIdle()
/* ARC FUNCTIONS **************************************************************/
diff --git a/boot/freeldr/freeldr/ntldr/winldr.c b/boot/freeldr/freeldr/ntldr/winldr.c index 9f51a541721..9724b174c61 100644 --- a/boot/freeldr/freeldr/ntldr/winldr.c +++ b/boot/freeldr/freeldr/ntldr/winldr.c @@ -1173,7 +1173,7 @@ LoadAndBootWindowsCommon(
/* Detect hardware */ UiUpdateProgressBar(20, "Detecting hardware..."); - LoaderBlock->ConfigurationRoot = MachHwDetect(); + LoaderBlock->ConfigurationRoot = MachHwDetect(BootOptions);
/* Initialize the PE loader import-DLL callback, so that we can obtain * feedback (for example during SOS) on the PE images that get loaded. */