feat: scheduling, usermode, shell
This commit is contained in:
+33
-13
@@ -17,25 +17,45 @@ namespace Hal {
|
||||
uint8_t BaseMiddle;
|
||||
uint8_t AccessByte;
|
||||
uint8_t GranularityByte;
|
||||
uint8_t BaseHigh;
|
||||
uint8_t BaseHigh;
|
||||
}__attribute__((packed));
|
||||
|
||||
|
||||
struct BasicGDT {
|
||||
GDTEntry Null;
|
||||
GDTEntry KernelCode;
|
||||
GDTEntry KernelData;
|
||||
GDTEntry UserCode;
|
||||
GDTEntry UserData;
|
||||
|
||||
// Task State Segment
|
||||
GDTEntry TSS;
|
||||
GDTEntry Null; // 0x00
|
||||
GDTEntry KernelCode; // 0x08
|
||||
GDTEntry KernelData; // 0x10
|
||||
GDTEntry UserData; // 0x18 (before UserCode for SYSRET)
|
||||
GDTEntry UserCode; // 0x20
|
||||
GDTEntry TSS; // 0x28 (low 8 bytes of 16-byte TSS descriptor)
|
||||
GDTEntry TSSHigh; // 0x30 (high 8 bytes of 16-byte TSS descriptor)
|
||||
}__attribute__((packed));
|
||||
|
||||
|
||||
struct GDTPointer {
|
||||
uint16_t Size;
|
||||
uint64_t GDTAddress;
|
||||
}__attribute__((packed));
|
||||
|
||||
|
||||
struct TSS64 {
|
||||
uint32_t reserved0;
|
||||
uint64_t rsp0;
|
||||
uint64_t rsp1;
|
||||
uint64_t rsp2;
|
||||
uint64_t reserved1;
|
||||
uint64_t ist1;
|
||||
uint64_t ist2;
|
||||
uint64_t ist3;
|
||||
uint64_t ist4;
|
||||
uint64_t ist5;
|
||||
uint64_t ist6;
|
||||
uint64_t ist7;
|
||||
uint64_t reserved2;
|
||||
uint16_t reserved3;
|
||||
uint16_t iopbOffset;
|
||||
}__attribute__((packed));
|
||||
|
||||
extern TSS64 g_tss;
|
||||
|
||||
void BridgeLoadGDT();
|
||||
void PrepareGDT();
|
||||
};
|
||||
void LoadTSS();
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user