mirror of
https://github.com/reactos/reactos.git
synced 2026-06-01 00:40:26 +08:00
[FREELDR:NTLDR] Compile EMS support on all platforms
EMS support isn't platform-specific, so we can compile it everywhere (as this is already done for the kernel and the SAC driver). The only platform-specific code currently existing is the retrieval of the system GUID, which is done on BIOS-based PC by reading the SMBIOS table in the low-MB ROM region, but should be done differently on other platforms. Add a compile-time warning for this.
This commit is contained in:
@@ -125,6 +125,16 @@ void MEMORY_WRITE_BREAKPOINT4(unsigned long addr);
|
|||||||
|
|
||||||
#endif // DBG
|
#endif // DBG
|
||||||
|
|
||||||
|
#define __STRING2__(x) #x
|
||||||
|
#define __STRING__(x) __STRING2__(x)
|
||||||
|
#define __STRLINE__ __STRING__(__LINE__)
|
||||||
|
|
||||||
|
#if !defined(_MSC_VER) && !defined(__pragma)
|
||||||
|
#define __pragma(x) _Pragma(#x)
|
||||||
|
#endif
|
||||||
|
#define _WARN(msg) __pragma(message("WARNING! Line " __STRLINE__ ": " msg))
|
||||||
|
|
||||||
|
|
||||||
DECLSPEC_NORETURN
|
DECLSPEC_NORETURN
|
||||||
void
|
void
|
||||||
NTAPI
|
NTAPI
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ VOID
|
|||||||
WinLdrLoadGUID(
|
WinLdrLoadGUID(
|
||||||
_Out_ PGUID SystemGuid)
|
_Out_ PGUID SystemGuid)
|
||||||
{
|
{
|
||||||
|
#if (defined(_M_IX86) || defined(_M_AMD64)) && !defined(UEFIBOOT)
|
||||||
PSYSID_UUID_ENTRY CurrentAddress;
|
PSYSID_UUID_ENTRY CurrentAddress;
|
||||||
|
|
||||||
CurrentAddress = (PSYSID_UUID_ENTRY)0xE0000;
|
CurrentAddress = (PSYSID_UUID_ENTRY)0xE0000;
|
||||||
@@ -59,6 +60,9 @@ WinLdrLoadGUID(
|
|||||||
}
|
}
|
||||||
CurrentAddress = (PSYSID_UUID_ENTRY)((ULONG_PTR)CurrentAddress + 1);
|
CurrentAddress = (PSYSID_UUID_ENTRY)((ULONG_PTR)CurrentAddress + 1);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
_WARN("WinLdrLoadGUID needs SMBIOS table reading implementation on this platform!");
|
||||||
|
#endif
|
||||||
|
|
||||||
RtlZeroMemory(SystemGuid, SYSID_UUID_DATA_SIZE);
|
RtlZeroMemory(SystemGuid, SYSID_UUID_DATA_SIZE);
|
||||||
}
|
}
|
||||||
@@ -251,11 +255,14 @@ WinLdrSetupEms(
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LoaderRedirectionInformation.PortAddress = (PUCHAR)strtoul(Option, 0, 16);
|
#ifdef _WIN64
|
||||||
|
#define strtoulptr strtoull
|
||||||
|
#else
|
||||||
|
#define strtoulptr strtoul
|
||||||
|
#endif
|
||||||
|
LoaderRedirectionInformation.PortAddress = (PUCHAR)strtoulptr(Option, 0, 16);
|
||||||
if (LoaderRedirectionInformation.PortAddress)
|
if (LoaderRedirectionInformation.PortAddress)
|
||||||
{
|
|
||||||
LoaderRedirectionInformation.PortNumber = 3;
|
LoaderRedirectionInformation.PortNumber = 3;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1193,10 +1193,8 @@ LoadAndBootWindowsCommon(
|
|||||||
|
|
||||||
ASSERT(OperatingSystemVersion != 0);
|
ASSERT(OperatingSystemVersion != 0);
|
||||||
|
|
||||||
#ifdef _M_IX86
|
|
||||||
/* Setup redirection support */
|
/* Setup redirection support */
|
||||||
WinLdrSetupEms(BootOptions);
|
WinLdrSetupEms(BootOptions);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Convert BootPath to SystemRoot */
|
/* Convert BootPath to SystemRoot */
|
||||||
SystemRoot = strstr(BootPath, "\\");
|
SystemRoot = strstr(BootPath, "\\");
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ list(APPEND ROSLOAD_SOURCE
|
|||||||
lib/rtl/libsupp.c
|
lib/rtl/libsupp.c
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmboot.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmboot.c
|
||||||
ntldr/conversion.c
|
ntldr/conversion.c
|
||||||
|
ntldr/headless.c
|
||||||
ntldr/inffile.c
|
ntldr/inffile.c
|
||||||
ntldr/registry.c
|
ntldr/registry.c
|
||||||
ntldr/setupldr.c
|
ntldr/setupldr.c
|
||||||
@@ -32,8 +33,7 @@ if(ARCH STREQUAL "i386")
|
|||||||
arch/i386/halstub.c
|
arch/i386/halstub.c
|
||||||
arch/i386/ntoskrnl.c
|
arch/i386/ntoskrnl.c
|
||||||
disk/scsiport.c
|
disk/scsiport.c
|
||||||
ntldr/arch/i386/winldr.c
|
ntldr/arch/i386/winldr.c)
|
||||||
ntldr/headless.c)
|
|
||||||
|
|
||||||
list(APPEND ROSLOAD_ASM_SOURCE
|
list(APPEND ROSLOAD_ASM_SOURCE
|
||||||
arch/i386/drvmap.S
|
arch/i386/drvmap.S
|
||||||
@@ -46,8 +46,7 @@ elseif(ARCH STREQUAL "amd64")
|
|||||||
|
|
||||||
list(APPEND ROSLOAD_ASM_SOURCE
|
list(APPEND ROSLOAD_ASM_SOURCE
|
||||||
arch/amd64/misc.S
|
arch/amd64/misc.S
|
||||||
arch/amd64/linux.S
|
arch/amd64/linux.S)
|
||||||
)
|
|
||||||
|
|
||||||
elseif(ARCH STREQUAL "arm")
|
elseif(ARCH STREQUAL "arm")
|
||||||
|
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ add_asm_files(uefifreeldr_common_asm ${FREELDR_COMMON_ASM_SOURCE} ${UEFILDR_COMM
|
|||||||
list(APPEND FREELDR_NTLDR_SOURCE
|
list(APPEND FREELDR_NTLDR_SOURCE
|
||||||
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmboot.c
|
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmboot.c
|
||||||
ntldr/conversion.c
|
ntldr/conversion.c
|
||||||
|
ntldr/headless.c
|
||||||
ntldr/inffile.c
|
ntldr/inffile.c
|
||||||
ntldr/registry.c
|
ntldr/registry.c
|
||||||
ntldr/setupldr.c
|
ntldr/setupldr.c
|
||||||
@@ -65,8 +66,7 @@ list(APPEND FREELDR_NTLDR_SOURCE
|
|||||||
|
|
||||||
if(ARCH STREQUAL "i386")
|
if(ARCH STREQUAL "i386")
|
||||||
list(APPEND FREELDR_NTLDR_SOURCE
|
list(APPEND FREELDR_NTLDR_SOURCE
|
||||||
ntldr/arch/i386/winldr.c
|
ntldr/arch/i386/winldr.c)
|
||||||
ntldr/headless.c)
|
|
||||||
elseif(ARCH STREQUAL "amd64")
|
elseif(ARCH STREQUAL "amd64")
|
||||||
list(APPEND FREELDR_NTLDR_SOURCE
|
list(APPEND FREELDR_NTLDR_SOURCE
|
||||||
ntldr/arch/amd64/winldr.c)
|
ntldr/arch/amd64/winldr.c)
|
||||||
|
|||||||
Reference in New Issue
Block a user