diff --git a/sortix/scheduler.cpp b/sortix/scheduler.cpp index 6bc109ea..280c5271 100644 --- a/sortix/scheduler.cpp +++ b/sortix/scheduler.cpp @@ -80,17 +80,17 @@ namespace Sortix Syscall::Register(SYSCALL_SLEEP, (void*) SysSleep); Syscall::Register(SYSCALL_USLEEP, (void*) SysUSleep); - addr_t stackstart = Memory::GetKernelStack(); + addr_t stackhigher = Memory::GetKernelStack(); size_t stacksize = Memory::GetKernelStackSize(); - addr_t stackend = stackstart - stacksize; + addr_t stacklower = stackhigher - stacksize; int prot = PROT_KREAD | PROT_KWRITE; - if ( !Memory::MapRange(stackend, stacksize, prot) ) + if ( !Memory::MapRange(stacklower, stacksize, prot) ) { PanicF("could not create kernel stack (%zx to %zx)", - stackend, stackstart); + stacklower, stackhigher); } - GDT::SetKernelStack((size_t*) stackstart); + GDT::SetKernelStack(stacklower, stacksize, stackhigher); } // The no operating thread is a thread stuck in an infinite loop that diff --git a/sortix/x86-family/gdt.cpp b/sortix/x86-family/gdt.cpp index 2c591d54..24211ce4 100644 --- a/sortix/x86-family/gdt.cpp +++ b/sortix/x86-family/gdt.cpp @@ -1,6 +1,6 @@ /******************************************************************************* - COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011, 2012. + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012. This file is part of Sortix. @@ -142,12 +142,12 @@ namespace Sortix #endif } - void SetKernelStack(size_t* stack) + void SetKernelStack(addr_t stacklower, size_t stacksize, addr_t stackhigher) { #ifdef PLATFORM_X86 - tss_entry.esp0 = (uint32_t) stack; + tss_entry.esp0 = (uint32_t) stackhigher; #elif defined(PLATFORM_X64) - tss_entry.stack0 = (uint64_t) stack; + tss_entry.stack0 = (uint64_t) stackhigher; #else #warning "TSS is not yet supported on this arch!" while(true); diff --git a/sortix/x86-family/gdt.h b/sortix/x86-family/gdt.h index ed8b934d..a30d4558 100644 --- a/sortix/x86-family/gdt.h +++ b/sortix/x86-family/gdt.h @@ -1,6 +1,6 @@ /******************************************************************************* - COPYRIGHT(C) JONAS 'SORTIE' TERMANSEN 2011, 2012. + Copyright(C) Jonas 'Sortie' Termansen 2011, 2012. This file is part of Sortix. @@ -120,7 +120,7 @@ namespace Sortix void Init(); void SetGate(int32_t num, uint32_t base, uint32_t limit, uint8_t access, uint8_t gran); void WriteTSS(int32_t num, uint16_t ss0, addr_t stack0); - void SetKernelStack(size_t* stack); + void SetKernelStack(addr_t stacklower, size_t stacksize, addr_t stackhigher); } }