@@ -294,6 +294,11 @@ void setup_idt(void)
handle_exception(13, check_exception_table);
}
+void load_idt(void)
+{
+ lidt(&idt_descr);
+}
+
unsigned exception_vector(void)
{
return this_cpu_read_exception_vector();
@@ -4,6 +4,7 @@
#include <setjmp.h>
void setup_idt(void);
+void load_idt(void);
void setup_alt_stack(void);
struct ex_regs {
@@ -170,7 +170,6 @@ void setup_multiboot(struct mbi_bootinfo *bi)
#ifdef CONFIG_EFI
/* From x86/efi/efistart64.S */
-extern void load_idt(void);
extern void load_gdt_tss(size_t tss_offset);
static efi_status_t setup_memory_allocator(efi_bootinfo_t *efi_bootinfo)
@@ -35,7 +35,7 @@ mb_flags = 0x0
mb_cmdline = 16
.macro setup_tr_and_percpu
- lidt idt_descr
+ call load_idt
push %esp
call setup_tss
addl $4, %esp
@@ -65,7 +65,6 @@ MSR_GS_BASE = 0xc0000101
.endm
.macro load_tss
- lidtq idt_descr
movq %rsp, %rdi
call setup_tss
ltr %ax
@@ -176,6 +175,7 @@ save_id:
ap_start64:
call reset_apic
+ call load_idt
load_tss
call enable_apic
call save_id
@@ -189,6 +189,7 @@ ap_start64:
start64:
call reset_apic
+ call load_idt
load_tss
call mask_pic_interrupts
call enable_apic
@@ -26,11 +26,6 @@ ptl4:
.code64
.text
-.globl load_idt
-load_idt:
- lidtq idt_descr(%rip)
- retq
-
.globl load_gdt_tss
load_gdt_tss:
/* Load GDT */
This allows sharing IDT setup code between EFI (-fPIC) and non-EFI builds. Signed-off-by: Varad Gautam <varad.gautam@suse.com> --- lib/x86/desc.c | 5 +++++ lib/x86/desc.h | 1 + lib/x86/setup.c | 1 - x86/cstart.S | 2 +- x86/cstart64.S | 3 ++- x86/efi/efistart64.S | 5 ----- 6 files changed, 9 insertions(+), 8 deletions(-)