:: limine / test / multiboot2_trampoline.asm 1.1 KB raw

1
extern multiboot2_main
2
3
global _start
4
5
section .multiboot_header
6
header_start:
7
    dd 0xe85250d6 	                                                ; Magic number (multiboot 2)
8
    dd 0				                                            ; Architecture 0 (protected mode i386)
9
    dd header_end - header_start 	                                ; Header length
10
    dd 0x100000000 - (0xe85250d6 + 0 + (header_end - header_start)) ; Checksum
11
12
align 8
13
framebuffer_tag_start:
14
    dw 5                                              ; type
15
    dw 1                                              ; flags
16
    dd framebuffer_tag_end - framebuffer_tag_start    ; size
17
    dd 800                                            ; width
18
    dd 600                                            ; height
19
    dd 32                                             ; depth
20
framebuffer_tag_end:
21
22
align 8
23
    ; Required end tag:
24
    dw 0	; type
25
    dw 0	; flags
26
    dw 8	; size
27
header_end:
28
29
section .text
30
bits 32
31
32
_start:
33
    cli
34
35
    mov esp, stack_top
36
37
	push ebx
38
	push eax
39
40
    call multiboot2_main ; Jump to our multiboot test kernel
41
42
section .bss
43
stack_bottom:
44
    resb 4096 * 16
45
stack_top:
tab: 248 wrap: offon