From: acevest Date: Thu, 1 Jan 2026 04:05:23 +0000 (+0800) Subject: 改用链接器来计算跳入保护模式的ljmp指令的内核偏移地址 X-Git-Url: http://repos.zhaoyanbai.com/Mou_128.png?a=commitdiff_plain;h=169401fb319437f6b0503373a3b3a154d59246b5;p=kernel.git 改用链接器来计算跳入保护模式的ljmp指令的内核偏移地址 --- diff --git a/boot/multiboot.S b/boot/multiboot.S index 98d2b53..24f9398 100644 --- a/boot/multiboot.S +++ b/boot/multiboot.S @@ -79,16 +79,12 @@ real_kernel_entry: addl $kernel_virtual_addr_start, %esp - # 由于编译器不支持下面这种写法 - # ljmp $0x08, $p_label + kernel_virtual_addr_start + .extern p_entry_vaddr + ljmp $0x08, $p_entry_vaddr - # 所以采用下面的方法跳转 - leal p_label,%eax - addl $kernel_virtual_addr_start, %eax - movl %eax, p_label_far_ptr - ljmp *p_label_far_ptr - -p_label: +.align 4 +.global p_entry # 为了让链接器计算出 p_entry_vaddr +p_entry: leal check_kernel, %eax call *%eax