%ifndef _DESCRIPTOR_INC
%define _DESCRIPTOR_INC
%macro Descriptor 3
dw (%2&0xffff)
dw (%1&0xffff)
db ((%1>>16)&0xff)
db (%3&0xff)
db (((%2>>16)&0xf)|((%3>>8)&0xf0))
db ((%1>>24)&0xff)
%endmacro
%macro Gdtr 2
dw %1&0xffff
dd %2&0xffffffff
%endmacro
DA_DPL0 equ 0x0
DA_DPL1 equ 0x20
DA_DPL2 equ 0x40
DA_DPL3 equ 0x60
DA_RO equ 0x90
DA_ROA equ 0x91
DA_RW equ 0x92
DA_RWA equ 0x93
DA_ROD equ 0x94
DA_RODA equ 0x95
DA_RWD equ 0x96
DA_RWDA equ 0x97
DA_EO equ 0x98
DA_EOA equ 0x99
DA_ER equ 0x9a
DA_ERA equ 0x9b
DA_EOC equ 0x9c
DA_EOCA equ 0x9d
DA_ERC equ 0x9e
DA_ERCA equ 0x9f
DA_286TSS_F equ 0x81
DA_286TSS_B equ 0x83
DA_286CGATE equ 0x84
DA_TASKGATE equ 0x85
DA_286IGATE equ 0x86
DA_286TGATE equ 0x87
DA_386TSS_F equ 0x89
DA_386TSS_B equ 0x8b
DA_386CGATE equ 0x8c
DA_386IGATE equ 0x8e
DA_386TGATE equ 0x8f
DA_32C equ 0x4000
DA_16C equ 0x0000
DA_S1 equ 0x0000
DA_S4K equ 0x8000
DA_RPL0 equ 0x0
DA_RPL1 equ 0x1
DA_RPL2 equ 0x2
DA_RPL3 equ 0x3
DA_GDT equ 0x0
DA_LDT equ 0x4
%endif