diff --git a/src/kern/ia32/cpu-ia32.cpp b/src/kern/ia32/cpu-ia32.cpp index dc828ceb..9a828075 100644 --- a/src/kern/ia32/cpu-ia32.cpp +++ b/src/kern/ia32/cpu-ia32.cpp @@ -1610,20 +1610,19 @@ PUBLIC FIASCO_INIT_AND_PM void Cpu::pm_resume() { + set_gdt(); + set_ldt(0); + + set_ds(Gdt::data_segment()); + set_es(Gdt::data_segment()); + set_ss(Gdt::gdt_data_kernel | Gdt::Selector_kernel); + set_fs(Gdt::gdt_data_user | Gdt::Selector_user); + set_gs(Gdt::gdt_data_user | Gdt::Selector_user); + set_cs(); + + // the boot CPU restores TSS in asm already if (id() != Cpu_number::boot_cpu()) - { - // the boot CPU restores some state in asm already - set_gdt(); - set_ldt(0); - set_ds(Gdt::data_segment()); - set_es(Gdt::data_segment()); - set_ss(Gdt::gdt_data_kernel | Gdt::Selector_kernel); - set_fs(Gdt::gdt_data_user | Gdt::Selector_user); - set_gs(Gdt::gdt_data_user | Gdt::Selector_user); - set_cs(); - - set_tss(); - } + set_tss(); if (_vendor == Vendor_intel) Ia32_intel_microcode::load(); diff --git a/src/kern/ia32/tramp-acpi.S b/src/kern/ia32/tramp-acpi.S index a5a095af..7271702f 100644 --- a/src/kern/ia32/tramp-acpi.S +++ b/src/kern/ia32/tramp-acpi.S @@ -75,13 +75,6 @@ _tramp_acpi_wakeup: lidt _idt lldt _ldt -#if 0 - movw _fs, %ax - movw %ax, %fs - movw _gs, %ax - movw %ax, %gs -#endif - /* restore general purpose registers */ #ifdef CONFIG_AMD64 mov _sp, %rsp @@ -136,10 +129,6 @@ _idt: .quad 0 .quad 0 _ldt: .quad 0 .quad 0 -#if 0 -_fs: .word 0 -_gs: .word 0 -#endif _tr: .quad 0 /* task register */ .quad 0 @@ -192,13 +181,6 @@ acpi_save_cpu_and_suspend: mov %cr4, %BX mov %BX, _cr4 -#if 0 - movw %fs, %bx - movw %bx, _fs - movw %gs, %bx - movw %bx, _gs -#endif - str _tr /* save descriptor table (registers) */ sgdt _gdt