Changes in kernel/arch/ia32/src/proc/scheduler.c [1d3d2cf:4a537dd] in mainline
- File:
-
- 1 edited
-
kernel/arch/ia32/src/proc/scheduler.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia32/src/proc/scheduler.c
r1d3d2cf r4a537dd 38 38 #include <proc/thread.h> 39 39 #include <arch.h> 40 #include <arch/ interrupt.h>40 #include <arch/context.h> /* SP_DELTA */ 41 41 #include <arch/pm.h> 42 42 #include <arch/asm.h> … … 58 58 void before_thread_runs_arch(void) 59 59 { 60 uintptr_t kstk = (uintptr_t) &THREAD->kstack[THREAD_STACK_SIZE]; 60 uintptr_t kstk = (uintptr_t) &THREAD->kstack[THREAD_STACK_SIZE - 61 SP_DELTA]; 61 62 62 63 if (CPU->arch.fi.bits.sep) { 63 64 /* Set kernel stack for CP3 -> CPL0 switch via SYSENTER */ 64 write_msr(IA32_MSR_SYSENTER_ESP, kstk - sizeof(istate_t));65 write_msr(IA32_MSR_SYSENTER_ESP, kstk); 65 66 } 66 67 67 68 /* Set kernel stack for CPL3 -> CPL0 switch via interrupt */ 68 69 CPU->arch.tss->esp0 = kstk; 69 CPU->arch.tss->ss0 = GDT_SELECTOR(KDATA_DES);70 CPU->arch.tss->ss0 = gdtselector(KDATA_DES); 70 71 71 72 /* Set up TLS in GS register */
Note:
See TracChangeset
for help on using the changeset viewer.
