123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- .set MB_MAGIC, 0x1BADB002
- .set MB_FLAG_PAGE_ALIGN, 1 << 0
- .set MB_FLAG_MEMORY_INFO, 1 << 1
- .set MB_FLAG_GRAPHICS, 1 << 2
- .set MB_FLAGS, MB_FLAG_PAGE_ALIGN | MB_FLAG_MEMORY_INFO | MB_FLAG_GRAPHICS
- .set MB_CHECKSUM, -(MB_MAGIC + MB_FLAGS)
- .section .multiboot
- .align 4
- /* Multiboot section */
- .long MB_MAGIC
- .long MB_FLAGS
- .long MB_CHECKSUM
- .long 0x00000000 /* header_addr */
- .long 0x00000000 /* load_addr */
- .long 0x00000000 /* load_end_addr */
- .long 0x00000000 /* bss_end_addr */
- .long 0x00000000 /* entry_addr */
- /* Request linear graphics mode */
- .long 0x00000000
- .long 0
- .long 0
- .long 32
- /* .stack resides in .bss */
- .section .stack, "aw", @nobits
- stack_bottom:
- .skip 32768 /* 32KiB */
- stack_top:
- .section .text
- .global start
- .type start, @function
- .extern kmain
- .type kmain, @function
- start:
- /* Setup our stack */
- mov $stack_top, %esp
- /* Make sure our stack is 16-byte aligned */
- and $-16, %esp
- pushl %esp
- pushl %eax /* Multiboot header magic */
- pushl %ebx /* Multiboot header pointer */
- /* Disable interrupts and call kernel proper */
- cli
- call kmain
- /* Clear interrupts and hang if we return from kmain */
- cli
- hang:
- hlt
- jmp hang
|