; Copyright (c) 2023-2026 Chris (boreddevnl) ; This software is released under the GNU General Public License v3.0. See LICENSE file for details. ; This header needs to maintain in any file it is present in, as per the GPL license terms. global gdt_flush global tss_flush section .text gdt_flush: lgdt [rdi] ; Load GDT from the pointer passed in RDI mov ax, 0x10 ; 0x10 is the offset in the GDT to data segment mov ds, ax mov es, ax mov fs, ax mov gs, ax mov ss, ax ; Far jump to update CS push 0x08 ; 0x08 is the offset to the code segment lea rax, [rel .flush] push rax retfq .flush: ret tss_flush: mov ax, 0x28 ; 0x28 is the offset in the GDT to the TSS ltr ax ret