void Arch_initContext(user_context_t* context) { Mode_initContext(context); context->registers[TLS_BASE] = 0; context->registers[Error] = 0; context->registers[FaultIP] = 0; context->registers[NextIP] = 0; /* overwritten by setNextPC() later on */ context->registers[CS] = SEL_CS_3; context->registers[FLAGS] = FLAGS_USER_DEFAULT; context->registers[SS] = SEL_DS_3; Arch_initFpuContext(context); #ifdef CONFIG_HARDWARE_DEBUG_API Arch_initBreakpointContext(&context->breakpointState); #endif }
void Arch_initContext(user_context_t* context) { context->registers[EAX] = 0; context->registers[EBX] = 0; context->registers[ECX] = 0; context->registers[EDX] = 0; context->registers[ESI] = 0; context->registers[EDI] = 0; context->registers[EBP] = 0; context->registers[DS] = SEL_DS_3; context->registers[ES] = SEL_DS_3; context->registers[FS] = SEL_NULL; context->registers[GS] = SEL_NULL; context->registers[TLS_BASE] = 0; context->registers[Error] = 0; context->registers[FaultEIP] = 0; context->registers[NextEIP] = 0; /* overwritten by setNextPC() later on */ context->registers[CS] = SEL_CS_3; context->registers[EFLAGS] = BIT(9) | BIT(1); /* enable interrupts and set bit 1 which is always 1 */ context->registers[ESP] = 0; /* userland has to set it after entry */ context->registers[SS] = SEL_DS_3; Arch_initFpuContext(context); }