Initialize AMD64 segments properly
All checks were successful
Builds / ExectOS (i686) (push) Successful in 33s
Builds / ExectOS (amd64) (push) Successful in 35s

This commit is contained in:
Rafal Kupiec 2024-04-17 20:02:27 +02:00
parent 8aa33874ff
commit cf408519ad
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4

View File

@ -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));
} }
/** /**