Files
Limine/common/protos/linux_64.asm_uefi_x86_64

63 lines
746 B
Plaintext

section .data
align 16
linux_gdt64:
dq 0
dq 0
dw 0xffff
dw 0x0000
db 0x00
db 10011011b
db 10101111b
db 0x00
dw 0xffff
dw 0x0000
db 0x00
db 10010011b
db 10001111b
db 0x00
.end:
align 16
linux_gdt64_ptr:
dw (linux_gdt64.end - linux_gdt64) - 1
dq linux_gdt64
section .text
bits 64
global linux_spinup64
linux_spinup64:
cli
cld
lgdt [rel linux_gdt64_ptr]
lea rbx, [rel .fj]
push 0x10
push rbx
retfq
.fj:
mov eax, 0x18
mov ds, eax
mov es, eax
mov fs, eax
mov gs, eax
mov ss, eax
mov rax, rdi
xor ebp, ebp
xor edi, edi
xor ebx, ebx
jmp rax
section .note.GNU-stack noalloc noexec nowrite progbits