diff --git a/src/sys/init/main.c b/src/sys/init/main.c index 3d17136..29a2035 100644 --- a/src/sys/init/main.c +++ b/src/sys/init/main.c @@ -35,12 +35,12 @@ 0x00 - Dummy Entry 0x08 - Ring 0 CS 0x10 - Ring 0 DS - 0x18 - Dummy LDT - 0x20 - Scheduler TSS - 0x28 - Ring 3 CS - 0x30 - Ring 3 DS - 0x38 - GPF TSS - 0x40 - Stack Fault TSS + 0x18 - Ring 3 CS + 0x20 - Ring 3 DS + 0x28 - Dummy LDT + 0x30 - GPF TSS + 0x38 - Stack Fault TSS + 0x40 - Task TSS Notes: @@ -49,12 +49,12 @@ {dummy:0}, ubixStandardDescriptor(0x0, 0xFFFFF, (dCode + dRead + dBig + dBiglim)), ubixStandardDescriptor(0x0, 0xFFFFF, (dData + dWrite + dBig + dBiglim)), - ubixStandardDescriptor(0x0, 0xFFFFF, (dLdt)), - ubixStandardDescriptor(0x4200, (sizeof(struct tssStruct)), (dTss + dDpl3)), ubixStandardDescriptor(0x0, 0xFFFFF, (dCode + dWrite + dBig + dBiglim + dDpl3)), ubixStandardDescriptor(0x0, 0xFFFFF, (dData + dWrite + dBig + dBiglim + dDpl3)), + ubixStandardDescriptor(0x0, 0xFFFFF, (dLdt)), ubixStandardDescriptor(0x4200, (sizeof(struct tssStruct)), (dTss)), ubixStandardDescriptor(0x6200, (sizeof(struct tssStruct)), (dTss)), + ubixStandardDescriptor(0x4200, (sizeof(struct tssStruct)), (dTss + dDpl3)), }; struct { unsigned short limit __attribute__ ((packed)); diff --git a/src/sys/init/start.S b/src/sys/init/start.S index 8a1d46b..03367c9 100644 --- a/src/sys/init/start.S +++ b/src/sys/init/start.S @@ -42,9 +42,9 @@ addl $0x2000,%eax mov %eax,%esp mov %eax,%ebp - mov $0x18,%ax + mov $0x28,%ax lldt %ax - mov $0x20,%ax + mov $0x40,%ax ltr %ax ljmp $0x08,$start_next start_next: