20 #include "pedigree/kernel/processor/x86_common/ProcessorInformation.h" 21 #include "pedigree/kernel/process/InfoBlock.h" 22 #include "pedigree/kernel/process/PerProcessorScheduler.h" 23 #include "pedigree/kernel/process/Process.h" 24 #include "pedigree/kernel/process/Thread.h" 25 #include "pedigree/kernel/processor/VirtualAddressSpace.h" 26 #include "pedigree/kernel/processor/types.h" 27 #include "pedigree/kernel/utilities/new" 30 #include "pedigree/kernel/processor/x86/tss.h" 32 #include "pedigree/kernel/processor/x64/tss.h" 75 return reinterpret_cast<void *
>(
m_Tss);
88 uintptr_t X86CommonProcessorInformation::getKernelStack()
const 96 void X86CommonProcessorInformation::setKernelStack(uintptr_t stack)
104 uint32_t eax = stack, edx = stack >> 32;
105 asm volatile(
"wrmsr" ::
"a"(eax),
"d"(edx),
"c"(0xc0000102));
109 Thread *X86CommonProcessorInformation::getCurrentThread()
const 114 void X86CommonProcessorInformation::setCurrentThread(
Thread *pThread)
117 InfoBlockManager::instance().setPid(pThread->
getParent()->
getId());
144 void X86CommonProcessorInformation::setIds(
static EXPORTED_PUBLIC VirtualAddressSpace & getKernelAddressSpace()
Process * getParent() const