void _set_gdt_entry(uint32_t index, uint32_t base, uint32_t limit, uint32_t flags) {
_gdt[index] = SEG_BASE_H(base) | flags | SEG_LIM_H(limit) | SEG_BASE_M(base);
_gdt[index] <<= 32;
_gdt[index] |= SEG_BASE_L(base) | SEG_LIM_L(limit);
}
void _set_gdt_entry(uint32_t index, uint32_t base, uint32_t limit, uint32_t flags) {
_gdt[index] = SEG_BASE_H(base) | flags | SEG_LIM_H(limit) | SEG_BASE_M(base);
_gdt[index] <<= 32;
_gdt[index] |= SEG_BASE_L(base) | SEG_LIM_L(limit);
}