// CC BY // code by SASANO Takayoshi #define MULTIBOOT_HEADER_MAGIC 0x1badb002 #define MULTIBOOT_PAGE_ALIGN 0x00000001 #define MULTIBOOT_MEMORY_INFO 0x00000002 #define MULTIBOOT_FLAGS (MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO) #define MULTIBOOT_CHECKSUM -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_FLAGS) .section .multiboot_header, "a" .align 4 .long MULTIBOOT_HEADER_MAGIC .long MULTIBOOT_FLAGS .long MULTIBOOT_CHECKSUM .text .code32 .global _start .type _start, @function _start: movl $stack_top, %esp pushl $0 popf movl %eax, multiboot_magic movl %ebx, multiboot_information call main die: hlt jmp die .bss .comm multiboot_magic, 4 .comm multiboot_information, 4 .section .bootstrap_stack, "aw", @nobits stack_bottom: .skip 4096 stack_top: