[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:
Hermès Bélusca-Maïto 2024-10-03 11:16:20 +02:00
parent 3b928898ef
commit 764881a94b
No known key found for this signature in database
GPG key ID: 3B2539C65E7B93D0
2 changed files with 26 additions and 40 deletions

View file

@ -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:

View file

@ -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)