Add GDT and Segments related definitions for AMD64
All checks were successful
ci/woodpecker/push/build Pipeline was successful

This commit is contained in:
Rafal Kupiec 2023-01-25 17:05:15 +01:00
parent c4d53f12f2
commit 8f348c3954
Signed by: belliash
GPG Key ID: 4E829243E0CFE6B4

View File

@ -13,6 +13,45 @@
#include <xttypes.h>
/* Selector masks */
#define MODE_MASK 0x0001
#define RPL_MASK 0x0003
/* GDT selector names */
#define KGDT_NULL 0x0000
#define KGDT_R0_CODE 0x0010
#define KGDT_R0_DATA 0x0018
#define KGDT_R3_CMCODE 0x0020
#define KGDT_R3_DATA 0x0028
#define KGDT_R3_CODE 0x0030
#define KGDT_SYS_TSS 0x0040
#define KGDT_R3_CMTEB 0x0050
#define KGDT_R0_LDT 0x0060
/* GDT descriptor privilege levels */
#define KGDT_DPL_SYSTEM 0
#define KGDT_DPL_USER 3
/* GDT descriptor properties */
#define KGDT_DESCRIPTOR_ACCESSED 0x01
#define KGDT_DESCRIPTOR_READ_WRITE 0x02
#define KGDT_DESCRIPTOR_EXECUTE_READ 0x02
#define KGDT_DESCRIPTOR_EXPAND_DOWN 0x04
#define KGDT_DESCRIPTOR_CONFORMING 0x04
#define KGDT_DESCRIPTOR_CODE 0x08
/* GDT descriptor type codes */
#define KGDT_TYPE_CODE (0x10 | KGDT_DESCRIPTOR_CODE | KGDT_DESCRIPTOR_EXECUTE_READ)
#define KGDT_TYPE_DATA (0x10 | KGDT_DESCRIPTOR_READ_WRITE)
/* AMD64 Segment Types */
#define AMD64_TASK_GATE 0x5
#define AMD64_TSS 0x9
#define AMD64_ACTIVE_TSS 0xB
#define AMD64_CALL_GATE 0xC
#define AMD64_INTERRUPT_GATE 0xE
#define AMD64_TRAP_GATE 0xF
/* Size of the exception area */
#define EXCEPTION_AREA_SIZE 64