Initialize AMD64 segments properly
This commit is contained in:
parent
8aa33874ff
commit
cf408519ad
@ -386,17 +386,13 @@ XTAPI
|
|||||||
VOID
|
VOID
|
||||||
ArpInitializeSegments(VOID)
|
ArpInitializeSegments(VOID)
|
||||||
{
|
{
|
||||||
asm volatile("mov %0, %%ax\n"
|
/* Initialize segments */
|
||||||
"mov %%ax, %%fs\n"
|
ArLoadSegment(SEGMENT_CS, KGDT_R0_CODE);
|
||||||
"mov %1, %%ax\n"
|
ArLoadSegment(SEGMENT_DS, KGDT_R3_DATA | RPL_MASK);
|
||||||
"mov %%ax, %%ds\n"
|
ArLoadSegment(SEGMENT_ES, KGDT_R3_DATA | RPL_MASK);
|
||||||
"mov %%ax, %%es\n"
|
ArLoadSegment(SEGMENT_FS, KGDT_R3_CMTEB | RPL_MASK);
|
||||||
"mov %%ax, %%gs\n"
|
ArLoadSegment(SEGMENT_GS, KGDT_R3_DATA | RPL_MASK);
|
||||||
"swapgs\n"
|
ArLoadSegment(SEGMENT_SS, KGDT_R0_DATA);
|
||||||
"mov %%ax, %%gs\n"
|
|
||||||
:
|
|
||||||
: "i" (KGDT_R3_CMTEB | RPL_MASK),
|
|
||||||
"i" (KGDT_R3_DATA | RPL_MASK));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user