mirror of
https://github.com/reactos/reactos.git
synced 2024-06-30 01:42:30 +00:00
![Hermès Bélusca-Maïto](/assets/img/avatar_default.png)
- Merge fade.c/palette.c/video.c into video.c and move it into UI. - Move inffile.c into NTLDR.
146 lines
4.1 KiB
C
146 lines
4.1 KiB
C
/*
|
|
* PROJECT: FreeLoader
|
|
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
|
* PURPOSE: Windows-compatible NT OS Loader.
|
|
* COPYRIGHT: Copyright 2006-2019 Aleksey Bragin <aleksey@reactos.org>
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <arc/setupblk.h>
|
|
|
|
/* Entry-point to kernel */
|
|
typedef VOID (NTAPI *KERNEL_ENTRY_POINT) (PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
/* Descriptors */
|
|
#define NUM_GDT 128 // Must be 128
|
|
#define NUM_IDT 0x100 // Only 16 are used though. Must be 0x100
|
|
|
|
#if 0
|
|
|
|
#include <pshpack1.h>
|
|
typedef struct /* Root System Descriptor Pointer */
|
|
{
|
|
CHAR signature [8]; /* contains "RSD PTR " */
|
|
UCHAR checksum; /* to make sum of struct == 0 */
|
|
CHAR oem_id [6]; /* OEM identification */
|
|
UCHAR revision; /* Must be 0 for 1.0, 2 for 2.0 */
|
|
ULONG rsdt_physical_address; /* 32-bit physical address of RSDT */
|
|
ULONG length; /* XSDT Length in bytes including hdr */
|
|
ULONGLONG xsdt_physical_address; /* 64-bit physical address of XSDT */
|
|
UCHAR extended_checksum; /* Checksum of entire table */
|
|
CHAR reserved [3]; /* reserved field must be 0 */
|
|
} RSDP_DESCRIPTOR, *PRSDP_DESCRIPTOR;
|
|
#include <poppack.h>
|
|
|
|
typedef struct _ARC_DISK_SIGNATURE_EX
|
|
{
|
|
ARC_DISK_SIGNATURE DiskSignature;
|
|
CHAR ArcName[MAX_PATH];
|
|
} ARC_DISK_SIGNATURE_EX, *PARC_DISK_SIGNATURE_EX;
|
|
|
|
#endif
|
|
|
|
#define MAX_OPTIONS_LENGTH 255
|
|
|
|
typedef struct _LOADER_SYSTEM_BLOCK
|
|
{
|
|
LOADER_PARAMETER_BLOCK LoaderBlock;
|
|
LOADER_PARAMETER_EXTENSION Extension;
|
|
SETUP_LOADER_BLOCK SetupBlock;
|
|
#ifdef _M_IX86
|
|
HEADLESS_LOADER_BLOCK HeadlessLoaderBlock;
|
|
#endif
|
|
NLS_DATA_BLOCK NlsDataBlock;
|
|
CHAR LoadOptions[MAX_OPTIONS_LENGTH+1];
|
|
CHAR ArcBootDeviceName[MAX_PATH+1];
|
|
// CHAR ArcHalDeviceName[MAX_PATH];
|
|
CHAR NtBootPathName[MAX_PATH+1];
|
|
CHAR NtHalPathName[MAX_PATH+1];
|
|
ARC_DISK_INFORMATION ArcDiskInformation;
|
|
} LOADER_SYSTEM_BLOCK, *PLOADER_SYSTEM_BLOCK;
|
|
|
|
extern PLOADER_SYSTEM_BLOCK WinLdrSystemBlock;
|
|
|
|
|
|
// conversion.c
|
|
#if 0
|
|
PVOID VaToPa(PVOID Va);
|
|
PVOID PaToVa(PVOID Pa);
|
|
VOID List_PaToVa(_In_ LIST_ENTRY *ListEntry);
|
|
#endif
|
|
VOID ConvertConfigToVA(PCONFIGURATION_COMPONENT_DATA Start);
|
|
|
|
|
|
// winldr.c
|
|
PVOID WinLdrLoadModule(PCSTR ModuleName, PULONG Size,
|
|
TYPE_OF_MEMORY MemoryType);
|
|
|
|
// wlmemory.c
|
|
BOOLEAN
|
|
WinLdrSetupMemoryLayout(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
// wlregistry.c
|
|
BOOLEAN
|
|
WinLdrInitSystemHive(
|
|
IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
IN PCSTR SystemRoot,
|
|
IN BOOLEAN Setup);
|
|
|
|
BOOLEAN WinLdrScanSystemHive(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
IN PCSTR SystemRoot);
|
|
|
|
// winldr.c
|
|
VOID
|
|
WinLdrInitializePhase1(PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
PCSTR Options,
|
|
PCSTR SystemPath,
|
|
PCSTR BootPath,
|
|
USHORT VersionToBoot);
|
|
BOOLEAN
|
|
WinLdrLoadNLSData(IN OUT PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
IN PCSTR DirectoryPath,
|
|
IN PCSTR AnsiFileName,
|
|
IN PCSTR OemFileName,
|
|
IN PCSTR LanguageFileName);
|
|
BOOLEAN
|
|
WinLdrAddDriverToList(LIST_ENTRY *BootDriverListHead,
|
|
PWSTR RegistryPath,
|
|
PWSTR ImagePath,
|
|
PWSTR ServiceName);
|
|
|
|
VOID
|
|
WinLdrpDumpMemoryDescriptors(PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
VOID
|
|
WinLdrpDumpBootDriver(PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
VOID
|
|
WinLdrpDumpArcDisks(PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
ARC_STATUS
|
|
LoadAndBootWindowsCommon(
|
|
USHORT OperatingSystemVersion,
|
|
PLOADER_PARAMETER_BLOCK LoaderBlock,
|
|
PCSTR BootOptions,
|
|
PCSTR BootPath,
|
|
BOOLEAN Setup);
|
|
|
|
VOID
|
|
WinLdrSetupMachineDependent(PLOADER_PARAMETER_BLOCK LoaderBlock);
|
|
|
|
VOID
|
|
WinLdrSetProcessorContext(VOID);
|
|
|
|
// arch/xxx/winldr.c
|
|
BOOLEAN
|
|
MempSetupPaging(IN PFN_NUMBER StartPage,
|
|
IN PFN_NUMBER NumberOfPages,
|
|
IN BOOLEAN KernelMapping);
|
|
|
|
VOID
|
|
MempUnmapPage(PFN_NUMBER Page);
|
|
|
|
VOID
|
|
MempDump(VOID);
|