[FREELDR]

- Move the NTOS loader files that were scattered in many places into their own directory (now all that stuff is inside freeldr/windows).
- Split arch/arm/winldr.c into the real winldr code (going into freeldr/windows) and entry point code (going into arch/arm/entry.c).

svn path=/trunk/; revision=70683
This commit is contained in:
Hermès Bélusca-Maïto 2016-02-03 15:20:37 +00:00
parent 9f8022a2b3
commit 076441f3ce
11 changed files with 64 additions and 37 deletions

View file

@ -91,7 +91,6 @@ if(ARCH STREQUAL "i386")
fs/pxe.c
arch/i386/archmach.c
arch/i386/drivemap.c
arch/i386/halstub.c
arch/i386/hardware.c
arch/i386/hwacpi.c
arch/i386/hwapm.c
@ -103,7 +102,6 @@ if(ARCH STREQUAL "i386")
arch/i386/i386rtl.c
arch/i386/i386vid.c
arch/i386/machpc.c
arch/i386/ntoskrnl.c
arch/i386/pccons.c
arch/i386/pcdisk.c
arch/i386/pcmem.c
@ -118,7 +116,9 @@ if(ARCH STREQUAL "i386")
arch/i386/xboxmem.c
arch/i386/xboxrtc.c
arch/i386/xboxvideo.c
arch/i386/winldr.c
windows/arch/i386/halstub.c
windows/arch/i386/ntoskrnl.c
windows/arch/i386/winldr.c
windows/headless.c
disk/scsiport.c)
if(NOT MSVC)
@ -142,19 +142,20 @@ elseif(ARCH STREQUAL "amd64")
arch/i386/i386disk.c
arch/i386/i386vid.c
arch/i386/machpc.c
arch/i386/ntoskrnl.c
arch/i386/pccons.c
arch/i386/pcdisk.c
arch/i386/pcmem.c
arch/i386/pcrtc.c
arch/i386/pcvideo.c
arch/amd64/winldr.c)
windows/arch/i386/ntoskrnl.c
windows/arch/amd64/winldr.c)
elseif(ARCH STREQUAL "arm")
list(APPEND FREELDR_COMMON_ASM_SOURCE
arch/arm/boot.S)
list(APPEND FREELDR_COMMON_SOURCE
arch/arm/entry.c
arch/arm/macharm.c
arch/arm/winldr.c)
windows/arch/arm/winldr.c)
else()
#TBD
endif()
@ -193,7 +194,7 @@ if(MSVC)
add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER")
add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER")
else()
add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text ")
add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text")
add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text")
endif()
else()

View file

@ -0,0 +1,31 @@
/*
* PROJECT: ReactOS Boot Loader
* LICENSE: BSD - See COPYING.ARM in the top level directory
* FILE: boot/freeldr/freeldr/arch/arm/entry.c
* PURPOSE: Implements the entry point for ARM machines (see also boot.S)
* PROGRAMMERS: ReactOS Portable Systems Group
*/
/* INCLUDES ***************************************************************/
#include <freeldr.h>
#include <debug.h>
/* FUNCTIONS **************************************************************/
VOID
RealEntryPoint(VOID)
{
BootMain("");
}
VOID
FrLdrBugCheckWithMessage(
ULONG BugCode,
PCHAR File,
ULONG Line,
PSTR Format,
...)
{
}

View file

@ -61,6 +61,10 @@ ULONG LenBits[] =
/* FUNCTIONS ******************************************************************/
VOID DiskStopFloppyMotor(VOID)
{
}
VOID
FrLdrCheckCpuCompatiblity(VOID)
{

View file

@ -79,6 +79,8 @@
#include <ui.h>
#include <ver.h>
#include <video.h>
/* NTOS loader */
#include <winldr.h>
/* File system headers */

View file

@ -160,9 +160,6 @@ WinLdrpDumpBootDriver(PLOADER_PARAMETER_BLOCK LoaderBlock);
VOID
WinLdrpDumpArcDisks(PLOADER_PARAMETER_BLOCK LoaderBlock);
BOOLEAN
MempAllocatePageTables();
BOOLEAN
MempSetupPaging(IN PFN_NUMBER StartPage,
IN PFN_NUMBER NumberOfPages,

View file

@ -28,6 +28,7 @@ ULONG_PTR TssBasePage;
/* FUNCTIONS **************************************************************/
static
BOOLEAN
MempAllocatePageTables(VOID)
{
@ -60,6 +61,7 @@ MempAllocatePageTables(VOID)
return TRUE;
}
static
PHARDWARE_PTE
MempGetOrCreatePageDir(PHARDWARE_PTE PdeBase, ULONG Index)
{
@ -85,6 +87,7 @@ MempGetOrCreatePageDir(PHARDWARE_PTE PdeBase, ULONG Index)
return SubDir;
}
static
BOOLEAN
MempMapSinglePage(ULONG64 VirtualAddress, ULONG64 PhysicalAddress)
{
@ -143,6 +146,7 @@ MempIsPageMapped(PVOID VirtualAddress)
return TRUE;
}
static
PFN_NUMBER
MempMapRangeOfPages(ULONG64 VirtualAddress, ULONG64 PhysicalAddress, PFN_NUMBER cPages)
{
@ -202,6 +206,7 @@ MempUnmapPage(PFN_NUMBER Page)
// TRACE(">>> MempUnmapPage\n");
}
static
VOID
WinLdrpMapApic(VOID)
{
@ -234,6 +239,7 @@ WinLdrpMapApic(VOID)
MempMapSinglePage(APIC_BASE, APICAddress);
}
static
BOOLEAN
WinLdrMapSpecialPages(VOID)
{
@ -265,6 +271,7 @@ WinLdrMapSpecialPages(VOID)
return TRUE;
}
static
VOID
Amd64SetupGdt(PVOID GdtBase, ULONG64 TssBase)
{
@ -313,6 +320,7 @@ Amd64SetupGdt(PVOID GdtBase, ULONG64 TssBase)
TRACE("Leave Amd64SetupGdt()\n");
}
static
VOID
Amd64SetupIdt(PVOID IdtBase)
{
@ -421,4 +429,3 @@ VOID
MempDump(VOID)
{
}

View file

@ -99,6 +99,7 @@ MempDump(VOID)
return;
}
static
BOOLEAN
WinLdrMapSpecialPages(ULONG PcrBasePage)
{
@ -191,6 +192,7 @@ WinLdrSetupForNt(IN PLOADER_PARAMETER_BLOCK LoaderBlock,
LoaderBlock->Thread = (ULONG_PTR)PdrPage->InitialThread;
}
static
BOOLEAN
MempAllocatePageTables(VOID)
{
@ -277,24 +279,3 @@ WinLdrSetupMachineDependent(
PLOADER_PARAMETER_BLOCK LoaderBlock)
{
}
VOID DiskStopFloppyMotor(VOID)
{
}
VOID
RealEntryPoint(VOID)
{
BootMain("");
}
VOID
FrLdrBugCheckWithMessage(
ULONG BugCode,
PCHAR File,
ULONG Line,
PSTR Format,
...)
{
}

View file

@ -8,7 +8,7 @@
/* INCLUDES ******************************************************************/
#include <ntoskrnl.h>
#include "ntoskrnl.h"
#define NDEBUG
#include <debug.h>

View file

@ -8,7 +8,7 @@
/* INCLUDES ******************************************************************/
#include <ntoskrnl.h>
#include "ntoskrnl.h"
/* For KeStallExecutionProcessor */
#if defined(_M_IX86) || defined(_M_AMD64)

View file

@ -46,6 +46,7 @@ PVOID GdtIdt;
/* FUNCTIONS **************************************************************/
static
BOOLEAN
MempAllocatePageTables(VOID)
{
@ -115,6 +116,7 @@ MempAllocatePageTables(VOID)
return TRUE;
}
static
VOID
MempAllocatePTE(ULONG Entry, PHARDWARE_PTE *PhysicalPT, PHARDWARE_PTE *KernelPT)
{
@ -144,8 +146,8 @@ MempAllocatePTE(ULONG Entry, PHARDWARE_PTE *PhysicalPT, PHARDWARE_PTE *KernelPT)
BOOLEAN
MempSetupPaging(IN PFN_NUMBER StartPage,
IN PFN_COUNT NumberOfPages,
IN BOOLEAN KernelMapping)
IN PFN_COUNT NumberOfPages,
IN BOOLEAN KernelMapping)
{
PHARDWARE_PTE PhysicalPT;
PHARDWARE_PTE KernelPT;
@ -221,6 +223,7 @@ MempUnmapPage(PFN_NUMBER Page)
}
}
static
VOID
WinLdrpMapApic(VOID)
{
@ -252,6 +255,7 @@ WinLdrpMapApic(VOID)
HalPageTable[(APIC_BASE - 0xFFC00000) >> MM_PAGE_SHIFT].CacheDisable = 1;
}
static
BOOLEAN
WinLdrMapSpecialPages(void)
{
@ -297,6 +301,7 @@ enum
UltraVision_8x10Font = 0x12,
};
static
void WinLdrSetupSpecialDataPointers(VOID)
{
REGS BiosRegs;
@ -690,4 +695,3 @@ MempDump(VOID)
}
}
#endif