63 lines
746 B
Plaintext
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
|