| 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: |