https://git.reactos.org/?p=reactos.git;a=commitdiff;h=10e7643c808e99acc387b380df567784e567d243

commit 10e7643c808e99acc387b380df567784e567d243
Author:     Hermès Bélusca-Maïto <[email protected]>
AuthorDate: Thu Jun 15 17:04:53 2023 +0200
Commit:     Hermès Bélusca-Maïto <[email protected]>
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. */

Reply via email to