mirror of
https://github.com/reactos/reactos.git
synced 2025-03-01 03:45:16 +00:00
[ROSLOAD] Add rosload.exe target as 2nd stage loader
This commit is contained in:
parent
ebcf3f23aa
commit
17cf47df44
3 changed files with 153 additions and 0 deletions
|
@ -135,6 +135,7 @@ if(ARCH STREQUAL "i386")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
include(pcat.cmake)
|
include(pcat.cmake)
|
||||||
|
include(rosload.cmake)
|
||||||
if(NOT ARCH STREQUAL "i386" OR NOT (SARCH STREQUAL "pc98" OR SARCH STREQUAL "xbox"))
|
if(NOT ARCH STREQUAL "i386" OR NOT (SARCH STREQUAL "pc98" OR SARCH STREQUAL "xbox"))
|
||||||
include(uefi.cmake)
|
include(uefi.cmake)
|
||||||
endif()
|
endif()
|
||||||
|
|
105
boot/freeldr/freeldr/rosload.cmake
Normal file
105
boot/freeldr/freeldr/rosload.cmake
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
##
|
||||||
|
## PROJECT: FreeLoader
|
||||||
|
## LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||||
|
## PURPOSE: Build definitions for rosload 2nd stage loader
|
||||||
|
## COPYRIGHT: Copyright 2024 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||||
|
##
|
||||||
|
|
||||||
|
spec2def(rosload.exe rosload.spec)
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_SOURCE
|
||||||
|
include/freeldr.h
|
||||||
|
bootmgr.c
|
||||||
|
custom.c
|
||||||
|
linuxboot.c
|
||||||
|
miscboot.c
|
||||||
|
options.c
|
||||||
|
oslist.c
|
||||||
|
lib/rtl/libsupp.c
|
||||||
|
${REACTOS_SOURCE_DIR}/ntoskrnl/config/cmboot.c
|
||||||
|
ntldr/conversion.c
|
||||||
|
ntldr/inffile.c
|
||||||
|
ntldr/registry.c
|
||||||
|
ntldr/setupldr.c
|
||||||
|
ntldr/winldr.c
|
||||||
|
ntldr/wlmemory.c
|
||||||
|
ntldr/wlregistry.c
|
||||||
|
)
|
||||||
|
|
||||||
|
if(ARCH STREQUAL "i386")
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_SOURCE
|
||||||
|
arch/i386/halstub.c
|
||||||
|
arch/i386/ntoskrnl.c
|
||||||
|
disk/scsiport.c
|
||||||
|
ntldr/arch/i386/winldr.c
|
||||||
|
ntldr/headless.c)
|
||||||
|
|
||||||
|
if(SARCH STREQUAL "pc98" OR SARCH STREQUAL "xbox")
|
||||||
|
# These machine types require built-in bitmap font
|
||||||
|
list(APPEND ROSLOAD_SOURCE
|
||||||
|
arch/vgafont.c)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_ASM_SOURCE
|
||||||
|
arch/i386/drvmap.S
|
||||||
|
arch/i386/linux.S)
|
||||||
|
|
||||||
|
elseif(ARCH STREQUAL "amd64")
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_SOURCE
|
||||||
|
ntldr/arch/amd64/winldr.c)
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_ASM_SOURCE
|
||||||
|
arch/amd64/misc.S
|
||||||
|
arch/amd64/linux.S
|
||||||
|
)
|
||||||
|
|
||||||
|
elseif(ARCH STREQUAL "arm")
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_SOURCE
|
||||||
|
ntldr/arch/arm/winldr.c)
|
||||||
|
|
||||||
|
list(APPEND ROSLOAD_ASM_SOURCE
|
||||||
|
arch/arm/boot.S)
|
||||||
|
|
||||||
|
else()
|
||||||
|
#TBD
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_asm_files(rosload_asm ${ROSLOAD_ASM_SOURCE})
|
||||||
|
|
||||||
|
add_executable(rosload
|
||||||
|
${ROSLOAD_SOURCE}
|
||||||
|
${rosload_asm}
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/rosload.def
|
||||||
|
)
|
||||||
|
|
||||||
|
set_target_properties(rosload
|
||||||
|
PROPERTIES
|
||||||
|
ENABLE_EXPORTS TRUE
|
||||||
|
DEFINE_SYMBOL "")
|
||||||
|
|
||||||
|
set_image_base(rosload 0x10000) # 0x200000
|
||||||
|
set_subsystem(rosload native)
|
||||||
|
set_entrypoint(rosload RunLoader)
|
||||||
|
|
||||||
|
if(ARCH STREQUAL "i386")
|
||||||
|
target_link_libraries(rosload mini_hal)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
target_link_libraries(rosload blcmlib blrtl libcntpr)
|
||||||
|
add_importlibs(rosload freeldr)
|
||||||
|
|
||||||
|
# dynamic analysis switches
|
||||||
|
if(STACK_PROTECTOR)
|
||||||
|
target_sources(rosload PRIVATE $<TARGET_OBJECTS:gcc_ssp_nt>)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(RUNTIME_CHECKS)
|
||||||
|
target_link_libraries(rosload runtmchk)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_dependencies(rosload bugcodes asm xdk)
|
||||||
|
|
||||||
|
add_cd_file(TARGET rosload DESTINATION loader NO_CAB FOR bootcd regtest livecd hybridcd)
|
47
boot/freeldr/freeldr/rosload.spec
Normal file
47
boot/freeldr/freeldr/rosload.spec
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
@ stdcall RtlAssert(ptr ptr long ptr)
|
||||||
|
@ varargs -arch=i386 ScsiDebugPrint(long str)
|
||||||
|
@ stdcall -arch=i386 ScsiPortCompleteRequest(ptr long long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortConvertPhysicalAddressToUlong(long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortConvertUlongToPhysicalAddress(long)
|
||||||
|
#@ stdcall -arch=x86_64 ScsiPortConvertUlongToPhysicalAddress(long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortFlushDma(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortFreeDeviceBase(ptr ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetBusData(ptr long long long ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetDeviceBase(ptr long long long long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetLogicalUnit(ptr long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetPhysicalAddress(ptr ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetSrb(ptr long long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetUncachedExtension(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortGetVirtualAddress(ptr long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortInitialize(ptr ptr ptr ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortIoMapTransfer(ptr ptr long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortLogError(ptr ptr long long long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortMoveMemory(ptr ptr long)
|
||||||
|
@ cdecl -arch=i386 ScsiPortNotification()
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortBufferUchar(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortBufferUshort(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortBufferUlong(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortUchar(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortUshort(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadPortUlong(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterBufferUchar(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterBufferUshort(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterBufferUlong(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterUchar(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterUshort(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortReadRegisterUlong(ptr)
|
||||||
|
@ stdcall -arch=i386 ScsiPortSetBusDataByOffset(ptr long long long ptr long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortStallExecution(long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortValidateRange(ptr long long long long long long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortBufferUchar(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortBufferUshort(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortBufferUlong(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortUchar(ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortUshort(ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWritePortUlong(ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUchar(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUshort(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterBufferUlong(ptr ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterUchar(ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterUshort(ptr long)
|
||||||
|
@ stdcall -arch=i386 ScsiPortWriteRegisterUlong(ptr long)
|
Loading…
Reference in a new issue