#include <config.h>
#include <arch/api/constants.h>
#include <arch/machine/registerset.h>
#include <machine/fpu.h>
#include <arch/object/structures.h>
#include <machine/debug.h>
const register_t msgRegisters[] = {
EDI, EBP
};
const register_t frameRegisters[] = {
FaultIP, ESP, FLAGS, EAX, EBX, ECX, EDX, ESI, EDI, EBP
};
const register_t gpRegisters[] = {
TLS_BASE, FS, GS
};
void Mode_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[ESP] = 0;
}
word_t Mode_sanitiseRegister(register_t reg, word_t v)
{
if (reg == FS || reg == GS) {
if (v != SEL_TLS && v != SEL_IPCBUF) {
v = 0;
}
}
return v;
}