From 58e9f8a9c7f63e500a20c7ee15ee7c67a3f90abc Mon Sep 17 00:00:00 2001 From: Richard Qin Date: Sun, 8 Nov 2026 06:48:12 +0800 Subject: [mubios] Transfer control from the BIOS to the MBR, which has been loaded at 0x7C00. Signed-off-by: Richard Qin --- mubios/arch/reset.S | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'mubios/arch') diff --git a/mubios/arch/reset.S b/mubios/arch/reset.S index 0be8a05..9654a0f 100644 --- a/mubios/arch/reset.S +++ b/mubios/arch/reset.S @@ -20,6 +20,10 @@ .intel_syntax noprefix .code16 + .equ MBR_LOAD_SEGMENT, 0x0000 + .equ MBR_LOAD_OFFSET, 0x7C00 + .equ BOOT_DRIVE_SLOT, 0x7FFC + .extern enter_protected_mode .section .text16.entry, "ax" @@ -36,9 +40,23 @@ reset_entry: mov es, ax mov ss, ax mov sp, 0x8000 + mov byte ptr [BOOT_DRIVE_SLOT], dl call enter_protected_mode + cli + mov dl, byte ptr [BOOT_DRIVE_SLOT] + xor ax, ax + mov ds, ax + mov es, ax + mov ss, ax + mov sp, MBR_LOAD_OFFSET + cld + + .byte 0xEA + .word MBR_LOAD_OFFSET + .word MBR_LOAD_SEGMENT + reset_halt: sti -- cgit v1.2.3