From 922fbd0c9142bda0305f5c5eb40dcf6a4f86daef Mon Sep 17 00:00:00 2001 From: Zhang Junyang Date: Sun, 22 Oct 2023 20:17:14 +0800 Subject: [PATCH] Minor fix to get entrypoint in the right place --- .../src/arch/x86/boot/linux_boot/setup/src/header.S | 8 +++----- runner/src/machine/qemu_grub_efi.rs | 5 +++++ 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/framework/jinux-frame/src/arch/x86/boot/linux_boot/setup/src/header.S b/framework/jinux-frame/src/arch/x86/boot/linux_boot/setup/src/header.S index 34d540ac1..177319a57 100644 --- a/framework/jinux-frame/src/arch/x86/boot/linux_boot/setup/src/header.S +++ b/framework/jinux-frame/src/arch/x86/boot/linux_boot/setup/src/header.S @@ -15,8 +15,6 @@ // are filled by the loader and will be read by Jinux. .code16 - -sentinel: .byte 0xff, 0xff .org 0x01f1 hdr: SETUP_SECTS = 4 @@ -56,8 +54,8 @@ hardware_subarch_data: .quad 0 payload_offset: .long 0xabababab # at 0x248/4, to be filled by the runner payload_length: .long 0xabababab # at 0x24c/4, to be filled by the runner setup_data: .quad 0 -pref_address: .quad 0x8000000 # 128MiB -init_size: .long 0x4000000 # 64MiB +pref_address: .quad 0 +init_size: .long 0xabababab # at 0x260/4, to be filled by the runner handover_offset: .long 0 kernel_info_offset: .long 0 @@ -66,6 +64,6 @@ kernel_info_offset: .long 0 // 32-bit setup code starts here. .code32 start_of_setup32: -.org 0x200 * SETUP_SECTS +.org 0x200 * (SETUP_SECTS + 1) .extern _rust_setup_entry jmp _rust_setup_entry diff --git a/runner/src/machine/qemu_grub_efi.rs b/runner/src/machine/qemu_grub_efi.rs index 0894b3bed..6b609dc75 100644 --- a/runner/src/machine/qemu_grub_efi.rs +++ b/runner/src/machine/qemu_grub_efi.rs @@ -199,6 +199,11 @@ fn make_zimage(path: &Path, kernel_path: &Path, header_path: &Path) -> std::io:: 0x24C, /* payload_length */ &(kernel_len as u32).to_le_bytes(), ); + fill_header_field( + &mut header, + 0x260, /* init_size */ + &((kernel_len + header_len) as u32).to_le_bytes(), + ); let mut kernel_image = File::create(path)?; kernel_image.write_all(&header)?;