From c27962fd7c8940949b886fcf5a0830b2ce7d2243 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Fri, 30 Sep 2016 08:55:29 -0600 Subject: [PATCH] Fixes for bootloader unreal loading --- bootloader/x86_64/bootsector.asm | 7 +++++-- bootloader/x86_64/startup-common.asm | 10 ++++++---- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/bootloader/x86_64/bootsector.asm b/bootloader/x86_64/bootsector.asm index ec1db67..43360ba 100644 --- a/bootloader/x86_64/bootsector.asm +++ b/bootloader/x86_64/bootsector.asm @@ -21,7 +21,7 @@ boot: ; dl comes with disk mov bh, 0 mov bl, [disk] - mov ax, (startup_start - boot) / 512 + mov eax, (startup_start - boot) / 512 mov bx, startup_start mov cx, (startup_end - startup_start) / 512 xor dx, dx @@ -58,11 +58,14 @@ load: jmp load .good_size: - mov [DAPACK.addr], ax + mov [DAPACK.addr], eax mov [DAPACK.buf], bx mov [DAPACK.count], cx mov [DAPACK.seg], dx + ; mov bx, [DAPACK.addr + 2] + ; call print_num + ; ; mov bx, [DAPACK.addr] ; call print_num ; diff --git a/bootloader/x86_64/startup-common.asm b/bootloader/x86_64/startup-common.asm index 2da1fe9..51da486 100644 --- a/bootloader/x86_64/startup-common.asm +++ b/bootloader/x86_64/startup-common.asm @@ -23,7 +23,7 @@ kernel_base equ 0x100000 ; how often do we need to call load and move memory mov ecx, kernel_file.length_sectors / buffer_size_sectors - mov ax, (kernel_file - boot) / 512 + mov eax, (kernel_file - boot) / 512 mov edi, kernel_base cld .lp: @@ -35,19 +35,21 @@ kernel_base equ 0x100000 mov bx, kernel_file mov dx, 0x0 - push ax + push edi + push eax call load ; moving buffer call unreal - pop ax + pop eax + pop edi mov esi, kernel_file mov ecx, buffer_size_bytes / 4 a32 rep movsd ; preparing next iteration - add ax, buffer_size_sectors + add eax, buffer_size_sectors pop cx loop .lp