mirror of
https://github.com/reactos/reactos.git
synced 2024-11-01 12:26:32 +00:00
[FREELDR] Remove the "setupldr" build target (#7419)
The setupldr and freeldr binaries are the same since commit 948e82af1
(r65832), because both their functionality have been shared.
This commit is contained in:
parent
3b928898ef
commit
764881a94b
|
@ -115,28 +115,28 @@ relocated:
|
||||||
call pollchar_and_empty
|
call pollchar_and_empty
|
||||||
|
|
||||||
// If we're booting in hybrid mode and our boot drive is the first HDD (drive 80h),
|
// If we're booting in hybrid mode and our boot drive is the first HDD (drive 80h),
|
||||||
// we have no other option than booting into SETUPLDR.
|
// we have no other option than booting into FREELDR.
|
||||||
cmp word ptr ds:[GetlinsecPtr], offset getlinsec_ebios
|
cmp word ptr ds:[GetlinsecPtr], offset getlinsec_ebios
|
||||||
jne .read_mbr
|
jne .read_mbr
|
||||||
cmp byte ptr ds:[DriveNumber], HEX(80)
|
cmp byte ptr ds:[DriveNumber], HEX(80)
|
||||||
je .boot_setupldr
|
je .boot_freeldr
|
||||||
|
|
||||||
.read_mbr:
|
.read_mbr:
|
||||||
// Read the first sector (MBR) from the first hard disk (drive 80h) to 7C00h.
|
// Read the first sector (MBR) from the first hard disk (drive 80h) to 7C00h.
|
||||||
// If we then decide to boot from HDD, we already have it at the right place.
|
// If we then decide to boot from HDD, we already have it at the right place.
|
||||||
// In case of an error (indicated by the Carry Flag), just boot SETUPLDR from our ReactOS medium.
|
// In case of an error (indicated by the Carry Flag), just boot FREELDR from our ReactOS medium.
|
||||||
mov ax, HEX(0201)
|
mov ax, HEX(0201)
|
||||||
mov dx, HEX(0080)
|
mov dx, HEX(0080)
|
||||||
mov cx, HEX(0001)
|
mov cx, HEX(0001)
|
||||||
mov bx, HEX(7C00)
|
mov bx, HEX(7C00)
|
||||||
call int13
|
call int13
|
||||||
jc .boot_setupldr
|
jc .boot_freeldr
|
||||||
|
|
||||||
// Verify the signature of the read MBR.
|
// Verify the signature of the read MBR.
|
||||||
// If it's invalid, there is probably no OS installed and we just boot SETUPLDR from our ReactOS medium.
|
// If it's invalid, there is probably no OS installed and we just boot FREELDR from our ReactOS medium.
|
||||||
mov ax, word ptr ds:[HEX(7C00)+510]
|
mov ax, word ptr ds:[HEX(7C00)+510]
|
||||||
cmp ax, HEX(AA55)
|
cmp ax, HEX(AA55)
|
||||||
jne .boot_setupldr
|
jne .boot_freeldr
|
||||||
|
|
||||||
#ifdef WAIT_FOR_KEY
|
#ifdef WAIT_FOR_KEY
|
||||||
// We could either boot from the ReactOS medium or from hard disk. Let the user decide!
|
// We could either boot from the ReactOS medium or from hard disk. Let the user decide!
|
||||||
|
@ -155,9 +155,9 @@ relocated:
|
||||||
add eax, 19
|
add eax, 19
|
||||||
|
|
||||||
.poll_again:
|
.poll_again:
|
||||||
// Check for a keypress, boot SETUPLDR from our ReactOS medium if a key was pressed.
|
// Check for a keypress, boot FREELDR from our ReactOS medium if a key was pressed.
|
||||||
call pollchar_and_empty
|
call pollchar_and_empty
|
||||||
jnz .boot_setupldr
|
jnz .boot_freeldr
|
||||||
|
|
||||||
// Check if another second has passed (in BIOS Timer ticks).
|
// Check if another second has passed (in BIOS Timer ticks).
|
||||||
mov ebx, ds:[BIOS_timer]
|
mov ebx, ds:[BIOS_timer]
|
||||||
|
@ -185,7 +185,7 @@ relocated:
|
||||||
|
|
||||||
ljmp16 0, HEX(7C00)
|
ljmp16 0, HEX(7C00)
|
||||||
|
|
||||||
.boot_setupldr:
|
.boot_freeldr:
|
||||||
#ifdef WAIT_FOR_KEY
|
#ifdef WAIT_FOR_KEY
|
||||||
call crlf_early
|
call crlf_early
|
||||||
call crlf_early
|
call crlf_early
|
||||||
|
@ -266,26 +266,26 @@ found_drive:
|
||||||
xchg eax, dword ptr ds:[si+file_sector]
|
xchg eax, dword ptr ds:[si+file_sector]
|
||||||
mov dword ptr ds:[CurrentDir+dir_lba], eax
|
mov dword ptr ds:[CurrentDir+dir_lba], eax
|
||||||
|
|
||||||
// Look for the "SETUPLDR.SYS" file.
|
// Look for the "FREELDR.SYS" file.
|
||||||
mov di, offset setupldr_sys
|
mov di, offset freeldr_sys
|
||||||
call searchdir
|
call searchdir
|
||||||
jnz .setupldr_found
|
jnz .freeldr_found
|
||||||
|
|
||||||
// The SETUPLDR file was not found, so bail out with an error message.
|
// The FREELDR file was not found, so bail out with an error message.
|
||||||
mov si, offset no_setupldr_msg
|
mov si, offset no_freeldr_msg
|
||||||
call writemsg
|
call writemsg
|
||||||
jmp kaboom
|
jmp kaboom
|
||||||
|
|
||||||
.setupldr_found:
|
.freeldr_found:
|
||||||
// Calculate the rounded up number of 2K sectors that need to be read.
|
// Calculate the rounded up number of 2K sectors that need to be read.
|
||||||
mov ecx, eax
|
mov ecx, eax
|
||||||
shr ecx, SECTOR_SHIFT
|
shr ecx, SECTOR_SHIFT
|
||||||
test eax, HEX(7FF)
|
test eax, HEX(7FF)
|
||||||
jz .load_setupldr
|
jz .load_freeldr
|
||||||
inc ecx
|
inc ecx
|
||||||
|
|
||||||
.load_setupldr:
|
.load_freeldr:
|
||||||
// Load the entire SETUPLDR.SYS (parameter CX = FFFFh) to its designated base address FREELDR_BASE.
|
// Load the entire FREELDR.SYS (parameter CX = FFFFh) to its designated base address FREELDR_BASE.
|
||||||
// Using a high segment address with offset 0 instead of segment 0 with offset FREELDR_BASE apparently increases compatibility with some BIOSes.
|
// Using a high segment address with offset 0 instead of segment 0 with offset FREELDR_BASE apparently increases compatibility with some BIOSes.
|
||||||
mov bx, FREELDR_BASE / 16
|
mov bx, FREELDR_BASE / 16
|
||||||
mov es, bx
|
mov es, bx
|
||||||
|
@ -293,15 +293,15 @@ found_drive:
|
||||||
mov cx, HEX(FFFF)
|
mov cx, HEX(FFFF)
|
||||||
call getfssec
|
call getfssec
|
||||||
|
|
||||||
// Pass two parameters to SETUPLDR:
|
// Pass two parameters to FREELDR:
|
||||||
// DL = BIOS Drive Number
|
// DL = BIOS Drive Number
|
||||||
// DH = Boot Partition (0 for HDD booting in hybrid mode, FFh for CD booting)
|
// DH = Boot Partition (0 for HDD booting in hybrid mode, FFh for CD booting)
|
||||||
movzx dx, byte ptr ds:[DriveNumber]
|
movzx dx, byte ptr ds:[DriveNumber]
|
||||||
cmp word ptr ds:[GetlinsecPtr], offset getlinsec_ebios
|
cmp word ptr ds:[GetlinsecPtr], offset getlinsec_ebios
|
||||||
je .jump_to_setupldr
|
je .jump_to_freeldr
|
||||||
mov dh, HEX(FF)
|
mov dh, HEX(FF)
|
||||||
|
|
||||||
.jump_to_setupldr:
|
.jump_to_freeldr:
|
||||||
// Transfer execution to the bootloader.
|
// Transfer execution to the bootloader.
|
||||||
ljmp16 0, FREELDR_BASE
|
ljmp16 0, FREELDR_BASE
|
||||||
|
|
||||||
|
@ -1086,10 +1086,10 @@ loader_dir:
|
||||||
.ascii "/LOADER", NUL
|
.ascii "/LOADER", NUL
|
||||||
no_dir_msg:
|
no_dir_msg:
|
||||||
.ascii "LOADER dir not found.", CR, LF, NUL
|
.ascii "LOADER dir not found.", CR, LF, NUL
|
||||||
setupldr_sys:
|
freeldr_sys:
|
||||||
.ascii "SETUPLDR.SYS", NUL
|
.ascii "FREELDR.SYS", NUL
|
||||||
no_setupldr_msg:
|
no_freeldr_msg:
|
||||||
.ascii "SETUPLDR.SYS not found.", CR, LF, NUL
|
.ascii "FREELDR.SYS not found.", CR, LF, NUL
|
||||||
|
|
||||||
.align 4
|
.align 4
|
||||||
BufSafe:
|
BufSafe:
|
||||||
|
|
|
@ -250,18 +250,4 @@ else()
|
||||||
add_custom_target(freeldr ALL DEPENDS freeldr_pe)
|
add_custom_target(freeldr ALL DEPENDS freeldr_pe)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Rename freeldr on livecd to setupldr.sys because isoboot.bin looks for setupldr.sys
|
add_cd_file(TARGET freeldr FILE ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys DESTINATION loader NO_CAB NOT_IN_HYBRIDCD FOR bootcd livecd hybridcd regtest)
|
||||||
add_cd_file(TARGET freeldr FILE ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys DESTINATION loader NO_CAB FOR bootcd regtest)
|
|
||||||
add_cd_file(TARGET freeldr FILE ${CMAKE_CURRENT_BINARY_DIR}/freeldr.sys DESTINATION loader NO_CAB NOT_IN_HYBRIDCD FOR livecd hybridcd NAME_ON_CD setupldr.sys)
|
|
||||||
|
|
||||||
if(NOT ARCH STREQUAL "arm")
|
|
||||||
concatenate_files(
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/frldr16.bin
|
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/$<TARGET_FILE_NAME:freeldr_pe>)
|
|
||||||
add_custom_target(setupldr ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys)
|
|
||||||
else()
|
|
||||||
add_custom_target(setupldr ALL DEPENDS freeldr_pe)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
add_cd_file(TARGET setupldr FILE ${CMAKE_CURRENT_BINARY_DIR}/setupldr.sys DESTINATION loader NO_CAB FOR bootcd regtest)
|
|
||||||
|
|
Loading…
Reference in a new issue