:: limine / common / entry_asm.s2.asm_bios_ia32 476 B raw

1
extern bss_begin
2
extern bss_end
3
extern entry
4
extern gdt
5
6
section .entry progbits alloc exec nowrite align=16
7
8
global _start
9
_start:
10
    cld
11
12
    ; Zero out .bss
13
    xor al, al
14
    mov edi, bss_begin
15
    mov ecx, bss_end
16
    sub ecx, bss_begin
17
    rep stosb
18
19
    lgdt [gdt]
20
    jmp 0x18:.reload_cs
21
  .reload_cs:
22
    mov eax, 0x20
23
    mov ds, ax
24
    mov es, ax
25
    mov fs, ax
26
    mov gs, ax
27
    mov ss, ax
28
29
    jmp entry
30
31
section .note.GNU-stack noalloc noexec nowrite progbits
tab: 248 wrap: offon