.code64 .section .boot.rodata, "a", @progbits /******* ERROR MESSAGE STRINGS *******/ kernel_identifier: .asciz " Socks kernel version " BUILD_ID " " .section .boot.text, "ax", @progbits vga_clear: mov $0xb8000, %rdi # VGA buffer mov $500, %rcx # 4,000 bytes to clear = 500 quadwords mov $0x0, %rax rep stosq ret # prints a block message showing the kernel name and version number # starting at cell 2x1 on the VGA display print_kernel_identifier: /* line 1: empty padding line */ mov $kernel_identifier, %rsi mov $0xb80a4, %rdi 1: movw $0x7000, (%rdi) # black text on white background. add $0x02, %rdi inc %rsi cmpb $0, (%rsi) jne 1b /* line 2: kernel identiifer */ mov $kernel_identifier, %rsi mov $0xb8144, %rdi 2: movsb movb $0x70, (%rdi) # black text on white background inc %rdi cmpb $0, (%rsi) jne 2b /* line 3: empty padding line */ mov $kernel_identifier, %rsi mov $0xb81e4, %rdi 1: movw $0x7000, (%rdi) # black text on white background. add $0x02, %rdi inc %rsi cmpb $0, (%rsi) jne 1b ret .global start_64 .type start_64, @function start_64: call vga_clear call print_kernel_identifier cli hlt