|
The Pedigree Project 0.1
|
#include <Processor.h>
Inheritance diagram for X86CommonProcessor:
Collaboration diagram for X86CommonProcessor:Static Public Member Functions | |
| static uint64_t | readMachineSpecificRegister (uint32_t index) |
| static void | writeMachineSpecificRegister (uint32_t index, uint64_t value) |
| static void | cpuid (uint32_t inEax, uint32_t inEcx, uint32_t &eax, uint32_t &ebx, uint32_t &ecx, uint32_t &edx) |
| static physical_uintptr_t | readCr3 () |
Static Public Member Functions inherited from ProcessorBase | |
| static void | initialise1 (const BootstrapStruct_t &Info) INITIALISATION_ONLY |
| first stage in the initialisation of the processor-specific interface | |
| static void | initialise2 (const BootstrapStruct_t &Info) INITIALISATION_ONLY |
| second/last stage in the initialisation of the processor-specific interface | |
| static void | initialisationDone () |
| static void | deinitialise () |
| static size_t | isInitialised () |
| static uintptr_t | getBasePointer () |
| static uintptr_t | getStackPointer () |
| static uintptr_t | getInstructionPointer () |
| static void | switchAddressSpace (VirtualAddressSpace &AddressSpace) |
| static bool | saveState (SchedulerState &state) |
| static void | restoreState (SchedulerState &state, volatile uintptr_t *pLock=0) NORETURN |
| static void | restoreState (SyscallState &state, volatile uintptr_t *pLock=0) NORETURN |
| static void | contextSwitch (InterruptState *state) NORETURN |
| static void | switchState (bool bInterrupts, SchedulerState &a, SchedulerState &b, volatile uintptr_t *pLock=0) |
| static void | switchState (bool bInterrupts, SchedulerState &a, SyscallState &b, volatile uintptr_t *pLock=0) |
| static void | saveAndJumpKernel (bool bInterrupts, SchedulerState &s, volatile uintptr_t *pLock, uintptr_t address, uintptr_t stack, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0) |
| static void | saveAndJumpUser (bool bInterrupts, SchedulerState &s, volatile uintptr_t *pLock, uintptr_t address, uintptr_t stack, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0) |
| static void | jumpKernel (volatile uintptr_t *pLock, uintptr_t address, uintptr_t stack, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0) NORETURN |
| static void | jumpUser (volatile uintptr_t *pLock, uintptr_t address, uintptr_t stack, uintptr_t p1=0, uintptr_t p2=0, uintptr_t p3=0, uintptr_t p4=0) NORETURN |
| static void | breakpoint () |
| static void | halt () |
| static void | reset () |
| static size_t | getDebugBreakpointCount () |
| static uintptr_t | getDebugBreakpoint (size_t nBpNumber, DebugFlags::FaultType &nFaultType, size_t &nLength, bool &bEnabled) |
| static void | enableDebugBreakpoint (size_t nBpNumber, uintptr_t nLinearAddress, DebugFlags::FaultType nFaultType, size_t nLength) |
| static void | disableDebugBreakpoint (size_t nBpNumber) |
| static uintptr_t | getDebugStatus () |
| static void | haltUntilInterrupt () |
| static void | pause () |
| static void | setInterrupts (bool bEnable) |
| static bool | getInterrupts () |
| static bool | inDeviceHardIrq () |
| static ExecutionContext | executionContext () |
| static bool | guardDeviceHardIrqOperation (DeviceHardIrqOperation operation) |
| static void | setSingleStep (bool bEnable, InterruptState &state) |
| static void | invalidate (void *pAddress) |
| static MUST_USE_RESULT TlbInvalidationResult | beginTlbInvalidation (TlbInvalidationGuard &guard) |
| static MUST_USE_RESULT TlbInvalidationResult | invalidateAll (void *pAddress) |
| static MUST_USE_RESULT TlbInvalidationResult | invalidateAll (void *pAddress, TlbInvalidationGuard &guard) |
| static bool | tlbInvalidationFailureActive () |
| static bool | tlbInvalidationTerminal () |
| static void | invalidateICache (uintptr_t nAddr) |
| static void | invalidateDCache (uintptr_t nAddr) |
| static void | flushDCache (uintptr_t nAddr) |
| static void | flushDCacheAndInvalidateICache (uintptr_t startAddr, uintptr_t endAddr) |
| static void | identify (HugeStaticString &str) |
| static ProcessorId | id () |
| static size_t | index () |
| static ProcessorInformation & | information () |
| static ProcessorInformation * | informationAt (size_t cpu) |
| static size_t | getCount () |
| static void | setTlsBase (uintptr_t newBase) |
| static uintptr_t | getUserGsBase () |
| static void | setUserGsBase (uintptr_t newBase) |
Additional Inherited Members | |
Static Public Attributes inherited from ProcessorBase | |
| static size_t | m_Initialised = 0 |
Common x86 processor functionality. Cast needed to get these.
Definition at line 27 of file x86_common/Processor.h.
|
static |
Executes the CPUID machine instruction
| [in] | inEax | eax before the CPUID instruction |
| [in] | inEcx | ecx before the CPUID instruction |
| [out] | eax | eax afterwards |
| [out] | ebx | ebx afterwards |
| [out] | ecx | ecx afterwards |
| [out] | edx | edx afterwards |
Definition at line 308 of file x86_common/Processor.cc.
Referenced by CpuInfoCommand::execute(), and NMFaultHandler::initialiseProcessor().
Here is the caller graph for this function:
|
static |
Read a Machine/Model-specific register
| [in] | index | the register index |
Definition at line 158 of file x86_common/Processor.cc.
References ProcessorBase::index().
Referenced by X64SyscallManager::initialiseProcessor(), and Pic::initialiseThreaded().
Here is the caller graph for this function:
|
static |
Write a Machine/Model-specific register
| [in] | index | the register index |
| [in] | value | the new value of the register |
Definition at line 164 of file x86_common/Processor.cc.
References ProcessorBase::index().
Referenced by X64SyscallManager::initialiseProcessor().
Here is the caller graph for this function: