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
|
@ -118,7 +118,7 @@ gdt:
|
|||
gdtdesc:
|
||||
.word 0x27 /* limit */
|
||||
.long gdt /* addr */
|
||||
realidt:
|
||||
LOCAL(realidt):
|
||||
.word 0
|
||||
.long 0
|
||||
protidt:
|
||||
|
@ -175,7 +175,7 @@ protcseg:
|
|||
/* zero %eax */
|
||||
xorl %eax, %eax
|
||||
|
||||
sidt realidt
|
||||
sidt LOCAL(realidt)
|
||||
lidt protidt
|
||||
|
||||
/* return on the old (or initialized) stack! */
|
||||
|
@ -205,7 +205,7 @@ prot_to_real:
|
|||
lgdt gdtdesc
|
||||
|
||||
sidt protidt
|
||||
lidt realidt
|
||||
lidt LOCAL(realidt)
|
||||
|
||||
/* save the protected mode stack */
|
||||
movl %esp, %eax
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue