mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
36 lines
462 B
ArmAsm
36 lines
462 B
ArmAsm
extern g_idtr
|
|
extern g_gdtr
|
|
|
|
global idt_write
|
|
idt_write:
|
|
lidt [rel g_idtr]
|
|
ret
|
|
|
|
global idt_load
|
|
idt_load:
|
|
sidt [rel g_idtr]
|
|
ret
|
|
|
|
global gdt_write
|
|
gdt_write:
|
|
lgdt [rel g_gdtr]
|
|
mov ax, si ; second arg is data segment
|
|
mov ds, ax
|
|
mov es, ax
|
|
mov fs, ax
|
|
mov gs, ax
|
|
mov ss, ax
|
|
push qword rdi ; first arg is code segment
|
|
lea rax, [rel .next]
|
|
push rax
|
|
o64 retf
|
|
.next:
|
|
ltr dx ; third arg is the TSS
|
|
ret
|
|
|
|
global gdt_load
|
|
gdt_load:
|
|
sgdt [rel g_gdtr]
|
|
ret
|
|
|