boredos_mirror/src/kernel/gdt_asm.asm
2026-02-28 00:19:00 +01:00

31 lines
755 B
NASM

; 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