]> Zhao Yanbai Git Server - kernel.git/commitdiff
移除非FIXED_SYSENTER_ESP_MODE的相关逻辑
authoracevest <zhaoyanbai@126.com>
Mon, 5 Jan 2026 05:42:14 +0000 (13:42 +0800)
committeracevest <zhaoyanbai@126.com>
Mon, 5 Jan 2026 05:42:14 +0000 (13:42 +0800)
Makefile
kernel/apic.c
kernel/sched.c
kernel/setup.c
kernel/syscall.S
kernel/syscall.c

index 4349e0e2f5857d8dde04afeebc264abbf65a847f..4c285e349cb189e050fe3414bca770faa0a33ea9 100644 (file)
--- 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
 
index 153b17960257686447b26b4a5ccf95926beaddb0..44c5c066009061d7f1491c13c141b6a62ee0f1e6 100644 (file)
@@ -190,5 +190,5 @@ void lapic_init() {
 }
 
 void init_apic() {
-    ioapic_init();
+    lapic_init();
 }
index f7e7fff13928ccc503e3746941c6932d1bc6d556..b0570770d7c265e23186f7dc98702d05996ff5be 100644 (file)
@@ -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) {
index 83b65da34dfefa5be72047c68bbabba2b94cc25c..19ac1f98664006e32d724bb1de5d709c67b7af49 100644 (file)
@@ -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();
 
index 130546d4895bd1037d636f4537fa98d57b90b86b..a1fce5546e30a19913017e9d5bb7e470dcfbc787 100644 (file)
@@ -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
index 7610022d6fb1f56284803e7d732c24cfb7dd222f..52a76ea11f2f67f760705c48ad0c7ce531a60e51 100644 (file)
@@ -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();
 }