From: acevest Date: Mon, 5 Jan 2026 05:42:14 +0000 (+0800) Subject: 移除非FIXED_SYSENTER_ESP_MODE的相关逻辑 X-Git-Url: http://repos.zhaoyanbai.com/?a=commitdiff_plain;h=d13f32ae93165dca39c06c33e193caa09fb2c5d2;p=kernel.git 移除非FIXED_SYSENTER_ESP_MODE的相关逻辑 --- diff --git a/Makefile b/Makefile index 4349e0e..4c285e3 100644 --- a/Makefile +++ b/Makefile @@ -42,7 +42,6 @@ CFLAGS += -fno-omit-frame-pointer CFLAGS += -fcf-protection=none CFLAGS += -nostdlib CFLAGS += -DNR_TTYS=3 -CFLAGS += -DFIXED_SYSENTER_ESP_MODE=1 CFLAGS += -DENABLE_BOOT_WAIT=0 CFLAGS += -DENABLE_CLOCK_IRQ_WAIT=0 diff --git a/kernel/apic.c b/kernel/apic.c index 153b179..44c5c06 100644 --- a/kernel/apic.c +++ b/kernel/apic.c @@ -190,5 +190,5 @@ void lapic_init() { } void init_apic() { - ioapic_init(); + lapic_init(); } diff --git a/kernel/sched.c b/kernel/sched.c index f7e7fff..b057077 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -79,12 +79,7 @@ void init_root_task() { root_task.esp0 = ((unsigned long)&root_task) + sizeof(root_task); root_task.cr3 = va2pa((unsigned long)(init_pgd)); - tss.esp0 = root_task.esp0; -#if FIXED_SYSENTER_ESP_MODE - // do nothing -#else - wrmsr(MSR_SYSENTER_ESP, root_task.esp0, 0); -#endif + tss.esp0 = root_task.esp0; // sysenter会把MSR_SYSENTER_ESP设置为&tss.esp0 for (i = 0; i < NR_TASK_OPEN_CNT; i++) { root_task.files.fds[i] = NULL; @@ -116,11 +111,6 @@ task_t* alloc_task_t() { void switch_to() { set_cr3(current->cr3); tss.esp0 = current->esp0; -#if FIXED_SYSENTER_ESP_MODE - // do nothing -#else - wrmsr(MSR_SYSENTER_ESP, current->esp0, 0); -#endif } void context_switch(task_t* prev, task_t* next) { diff --git a/kernel/setup.c b/kernel/setup.c index 83b65da..19ac1f9 100644 --- a/kernel/setup.c +++ b/kernel/setup.c @@ -77,13 +77,7 @@ void print_kernel_version() { void parse_rsdt(void* addr); void setup_kernel() { - printk("sysenter esp mode: %s\n", -#if FIXED_SYSENTER_ESP_MODE - "fixed to &tss.esp0" -#else - "use task union stack" -#endif - ); + printk("sysenter esp mode: fixed to &tss.esp0\n"); init_mm(); diff --git a/kernel/syscall.S b/kernel/syscall.S index 130546d..a1fce55 100644 --- a/kernel/syscall.S +++ b/kernel/syscall.S @@ -30,9 +30,7 @@ //.global syscall_exit syscall_entry: -#if FIXED_SYSENTER_ESP_MODE movl (%esp),%esp -#endif // sysenter have cleared IF, and sysexit will not set IF. sti diff --git a/kernel/syscall.c b/kernel/syscall.c index 7610022..52a76ea 100644 --- a/kernel/syscall.c +++ b/kernel/syscall.c @@ -27,9 +27,7 @@ unsigned long sysc_handler_table[SYSC_NUM]; void setup_sysc() { wrmsr(MSR_SYSENTER_CS, SELECTOR_KRNL_CS, 0); wrmsr(MSR_SYSENTER_EIP, syscall_entry, 0); -#if FIXED_SYSENTER_ESP_MODE wrmsr(MSR_SYSENTER_ESP, &(tss.esp0), 0); -#endif init_sysc_handler_table(); }