arch_thread
void arm_context_switch(struct arch_thread* from, struct arch_thread* to);
x86_context_switch(arch_thread* oldState, arch_thread* newState)
[rsp] "i" (offsetof(arch_thread, current_stack)),
[rip] "i" (offsetof(arch_thread, instruction_pointer))
struct arch_thread;
void x86_context_switch(struct arch_thread* oldState,
struct arch_thread* newState);
arch_thread::GetFramePointer() const
arch_thread::GetFramePointer() const
struct arch_thread arch_info;
struct arch_thread *at = (struct arch_thread *)info;
static struct arch_thread sInitialState;
memcpy(&thread->arch_info, &sInitialState, sizeof(struct arch_thread));
memset(&thread->arch_info, 0, sizeof(arch_thread));
extern "C" void _arch_context_swap(arch_thread *from, arch_thread *to);
memcpy(&thread->arch_info, &sInitialState, sizeof(struct arch_thread));
struct arch_thread *at = (struct arch_thread *)info;
static struct arch_thread sInitialState;
memcpy(&thread->arch_info, &sInitialState, sizeof(struct arch_thread));
struct arch_thread *at = (struct arch_thread *)info;
static struct arch_thread sInitialState;
DEFINE_OFFSET_MACRO(ARCH_THREAD, arch_thread, context);
DEFINE_OFFSET_MACRO(ARCH_THREAD, arch_thread, fpuContext);
memcpy(&thread->arch_info, &sInitialState, sizeof(struct arch_thread));
struct arch_thread *at = (struct arch_thread *)info;
static struct arch_thread sInitialState _ALIGNED(16);
memcpy(&thread->arch_info, &sInitialState, sizeof(arch_thread));
arch_thread* thread = (arch_thread*)info;
static arch_thread sInitialState _ALIGNED(64);
if (gFPUSaveLength > sizeof(((struct arch_thread *)0)->user_fpu_state))
DEFINE_OFFSET_MACRO(ARCH_THREAD, arch_thread, syscall_rsp);
DEFINE_OFFSET_MACRO(ARCH_THREAD, arch_thread, user_rsp);
DEFINE_OFFSET_MACRO(ARCH_THREAD, arch_thread, current_stack);