:: limine / common / protos / linux_64.asm_uefi_x86_64 746 B raw

1
section .data
2
3
align 16
4
linux_gdt64:
5
    dq 0
6
7
    dq 0
8
9
    dw 0xffff
10
    dw 0x0000
11
    db 0x00
12
    db 10011011b
13
    db 10101111b
14
    db 0x00
15
16
    dw 0xffff
17
    dw 0x0000
18
    db 0x00
19
    db 10010011b
20
    db 10001111b
21
    db 0x00
22
23
  .end:
24
25
align 16
26
linux_gdt64_ptr:
27
    dw (linux_gdt64.end - linux_gdt64) - 1
28
    dq linux_gdt64
29
30
section .text
31
32
bits 64
33
34
global linux_spinup64
35
linux_spinup64:
36
    cli
37
    cld
38
39
    lgdt [rel linux_gdt64_ptr]
40
41
    lea rbx, [rel .fj]
42
    push 0x10
43
    push rbx
44
    retfq
45
46
  .fj:
47
    mov eax, 0x18
48
    mov ds, eax
49
    mov es, eax
50
    mov fs, eax
51
    mov gs, eax
52
    mov ss, eax
53
54
    mov rax, rdi
55
56
    xor ebp, ebp
57
    xor edi, edi
58
    xor ebx, ebx
59
60
    jmp rax
61
62
section .note.GNU-stack noalloc noexec nowrite progbits
tab: 248 wrap: offon