Fix interrupt mixup from previous commit.
* include/grub/i386/pc/int.h (grub_i386_idt): New struct. (grub_realidt): New var. * grub-core/lib/i386/relocator16.S (grub_relocator16_idt): New variable Load idt. * grub-core/lib/i386/relocator.c (grub_relocator16_idt): New declaration. (grub_relocator16_boot): Set grub_relocator16_idt. * grub-core/kern/i386/realmode.S (realidt): Renamed to ... (LOCAL(realidt)): ... this. * grub-core/boot/i386/pc/startup_raw.S: Pass pointer to realidt in eax. * grub-core/kern/i386/pc/startup.S: Save pointer to realidt. (grub_realidt): New variable.
This commit is contained in:
parent
27317084c6
commit
94f064b4c9
7 changed files with 47 additions and 4 deletions
|
@ -56,6 +56,7 @@ _start:
|
|||
|
||||
movl %ecx, (LOCAL(real_to_prot_addr) - _start) (%esi)
|
||||
movl %edi, (LOCAL(prot_to_real_addr) - _start) (%esi)
|
||||
movl %eax, (EXT_C(grub_realidt) - _start) (%esi)
|
||||
|
||||
/* copy back the decompressed part (except the modules) */
|
||||
movl $(_edata - _start), %ecx
|
||||
|
@ -177,6 +178,9 @@ FUNCTION(grub_pxe_call)
|
|||
|
||||
#include "../int.S"
|
||||
|
||||
VARIABLE(grub_realidt)
|
||||
.long 0
|
||||
|
||||
.bss
|
||||
VARIABLE(grub_boot_device)
|
||||
.long 0
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue