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:
Vladimir 'phcoder' Serbinenko 2012-02-26 22:10:13 +01:00
parent 27317084c6
commit 94f064b4c9
7 changed files with 47 additions and 4 deletions

View file

@ -51,8 +51,16 @@ struct grub_bios_int_registers
#define GRUB_CPU_INT_FLAGS_DEFAULT 0
#endif
void EXPORT_FUNC (grub_bios_interrupt) (grub_uint8_t intno,
struct grub_bios_int_registers *regs);
struct grub_i386_idt
{
grub_uint16_t limit;
grub_uint32_t base;
} __attribute__ ((packed));
#ifdef GRUB_MACHINE_PCBIOS
extern struct grub_i386_idt *EXPORT_VAR(grub_realidt);
#endif
#endif