|
The Pedigree Project 0.1
|
#include <state.h>
Collaboration diagram for X64InterruptState:Public Member Functions | |
| const X64UserEntryMetadata & | getUserEntryMetadata () const |
| void | setUserEntryMetadata (const X64UserEntryMetadata &metadata) |
| void | refreshUserTlsBase () |
| uintptr_t | getStackPointer () const |
| void | setStackPointer (uintptr_t stackPointer) |
| uintptr_t | getInstructionPointer () const |
| void | setInstructionPointer (uintptr_t instructionPointer) |
| uintptr_t | getBasePointer () const |
| void | setBasePointer (uintptr_t basePointer) |
| size_t | getRegisterCount () const |
| processor_register_t | getRegister (size_t index) const |
| void | setRegister (size_t index, uintptr_t value) |
| const char * | getRegisterName (size_t index) const |
| size_t | getRegisterSize (size_t index) const |
| bool | kernelMode () const |
| size_t | getInterruptNumber () const |
| uintptr_t | getErrorCode () const |
| uint16_t | getCodeSegment () const |
| uint16_t | getStackSegment () const |
| uint64_t | getFlags () const |
| void | setFlags (uint64_t flags) |
Static Public Member Functions | |
| static X64InterruptState * | construct (class X64ProcessorState &state, bool userMode, const X64UserEntryMetadata &metadata) |
Private Member Functions | |
| X64InterruptState () | |
| X64InterruptState (const X64InterruptState &) | |
| X64InterruptState & | operator= (const X64InterruptState &) |
| ~X64InterruptState () | |
Private Attributes | |
| X64UserEntryMetadata | m_UserEntry |
| uint64_t | m_R15 |
| uint64_t | m_R14 |
| uint64_t | m_R13 |
| uint64_t | m_R12 |
| uint64_t | m_R11 |
| uint64_t | m_R10 |
| uint64_t | m_R9 |
| uint64_t | m_R8 |
| uint64_t | m_Rbp |
| uint64_t | m_Rsi |
| uint64_t | m_Rdi |
| uint64_t | m_Rdx |
| uint64_t | m_Rcx |
| uint64_t | m_Rbx |
| uint64_t | m_Rax |
| uint64_t | m_IntNumber |
| uint64_t | m_Errorcode |
| uint64_t | m_Rip |
| uint64_t | m_Cs |
| uint64_t | m_Rflags |
| uint64_t | m_Rsp |
| uint64_t | m_Ss |
Friends | |
| class | X64ProcessorState |
| class | X64InterruptManager |
| class | PageFaultHandler |
x64 Interrupt State
Definition at line 45 of file x64/state.h.
|
private |
The default constructor
|
private |
The copy-constructor
|
private |
The destructor
|
static |
Construct a dummy interruptstate on the stack given in 'state', which when executed will set the processor to 'state'.
Definition at line 192 of file x64/state.cc.
References X64ProcessorState::getStackPointer(), X64ProcessorState::r10, X64ProcessorState::r11, X64ProcessorState::r12, X64ProcessorState::r13, X64ProcessorState::r14, X64ProcessorState::r15, X64ProcessorState::r8, X64ProcessorState::r9, X64ProcessorState::rax, X64ProcessorState::rbp, X64ProcessorState::rbx, X64ProcessorState::rcx, X64ProcessorState::rdi, X64ProcessorState::rdx, X64ProcessorState::rip, X64ProcessorState::rsi, and X64ProcessorState::rsp.
|
inline |
Get the base-pointer
Definition at line 442 of file x64/state.h.
References m_Rbp.
|
inline |
Get the interrupted code-segment selector.
Definition at line 461 of file x64/state.h.
References m_Cs.
|
inline |
Get the processor-supplied exception error code.
Definition at line 458 of file x64/state.h.
References m_Errorcode.
|
inline |
Get the flags register
Definition at line 468 of file x64/state.h.
References m_Rflags.
|
inline |
Get the instruction-pointer of the next instruction that is executed after the interrupt is processed
Definition at line 436 of file x64/state.h.
References m_Rip.
|
inline |
Get the interrupt number
Definition at line 455 of file x64/state.h.
References m_IntNumber.
| processor_register_t X64InterruptState::getRegister | ( | size_t | index | ) | const |
Get a specific register
| [in] | index | the index of the register (from 0 to getRegisterCount() - 1) |
Definition at line 35 of file x64/state.cc.
References getStackPointer(), m_R10, m_R11, m_R12, m_R13, m_R14, m_R15, m_R8, m_R9, m_Rax, m_Rbp, m_Rbx, m_Rcx, m_Rdi, m_Rdx, m_Rflags, m_Rip, and m_Rsi.
| size_t X64InterruptState::getRegisterCount | ( | ) | const |
Get the number of registers
Definition at line 32 of file x64/state.cc.
| const char * X64InterruptState::getRegisterName | ( | size_t | index | ) | const |
Get the name of a specific register
| [in] | index | the index of the register (from 0 to getRegisterCount() - 1) |
Definition at line 112 of file x64/state.cc.
|
inline |
Get the register's size in bytes
| [in] | index | the index of the register (from 0 to getRegisterCount() - 1) |
Definition at line 448 of file x64/state.h.
|
inline |
Get the stack-pointer before the interrupt occured
Definition at line 430 of file x64/state.h.
References m_Rsp.
Referenced by getRegister().
Here is the caller graph for this function:
|
inline |
Get the interrupted stack-segment selector.
Definition at line 464 of file x64/state.h.
References m_Ss.
|
inline |
Definition at line 51 of file x64/state.h.
|
inline |
Did the interrupt happen in kernel-mode?
Definition at line 452 of file x64/state.h.
References m_Cs.
|
private |
The assignement operator
| void X64InterruptState::refreshUserTlsBase | ( | ) |
Definition at line 235 of file x64/state.cc.
|
inline |
Set the base-pointer
| [in] | basePointer | the new base-pointer |
Definition at line 445 of file x64/state.h.
References m_Rbp.
|
inline |
Set the flags register
| [in] | flags | the new flags |
Definition at line 471 of file x64/state.h.
References m_Rflags.
|
inline |
Set the instruction-pointer
| [in] | instructionPointer | the new instruction-pointer |
Definition at line 439 of file x64/state.h.
References m_Rip.
| void X64InterruptState::setRegister | ( | size_t | index, |
| uintptr_t | value | ||
| ) |
Set a specific register
| [in] | index | the index of the register (from 0 to getRegisterCount() - 1) |
| [in] | value | the new value for the register |
Definition at line 74 of file x64/state.cc.
References m_R10, m_R11, m_R12, m_R13, m_R14, m_R15, m_R8, m_R9, m_Rax, m_Rbp, m_Rbx, m_Rcx, m_Rdi, m_Rdx, m_Rflags, m_Rip, m_Rsi, and m_Rsp.
|
inline |
Set the userspace stack-pointer
| [in] | stackPointer | the new stack-pointer |
Definition at line 433 of file x64/state.h.
References m_Rsp.
|
inline |
Definition at line 54 of file x64/state.h.
|
friend |
Definition at line 48 of file x64/state.h.
|
friend |
Definition at line 47 of file x64/state.h.
|
friend |
Definition at line 46 of file x64/state.h.
|
private |
The CS segment register
Definition at line 189 of file x64/state.h.
Referenced by getCodeSegment(), and kernelMode().
|
private |
|
private |
The interrupt number
Definition at line 183 of file x64/state.h.
Referenced by getInterruptNumber().
|
private |
The R10 general purpose register
Definition at line 163 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R11 general purpose register
Definition at line 161 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R12 general purpose register
Definition at line 159 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R13 general purpose register
Definition at line 157 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R14 general purpose register
Definition at line 155 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R15 general purpose register
Definition at line 153 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R8 general purpose register
Definition at line 167 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The R9 general purpose register
Definition at line 165 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The RAX general purpose register
Definition at line 181 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The base-pointer
Definition at line 169 of file x64/state.h.
Referenced by getBasePointer(), getRegister(), setBasePointer(), and setRegister().
|
private |
The RBX general purpose register
Definition at line 179 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The RCX general purpose register
Definition at line 177 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The RDI general purpose register
Definition at line 173 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The RDX general purpose register
Definition at line 175 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The RFlags register
Definition at line 191 of file x64/state.h.
Referenced by getFlags(), getRegister(), setFlags(), and setRegister().
|
private |
The instruction-pointer
Definition at line 187 of file x64/state.h.
Referenced by getInstructionPointer(), getRegister(), setInstructionPointer(), and setRegister().
|
private |
The RSI general purpose register
Definition at line 171 of file x64/state.h.
Referenced by getRegister(), and setRegister().
|
private |
The stack-pointer
Definition at line 193 of file x64/state.h.
Referenced by getStackPointer(), setRegister(), and setStackPointer().
|
private |
The SS segment register
Definition at line 195 of file x64/state.h.
Referenced by getStackSegment().
|
private |
Definition at line 150 of file x64/state.h.