diff --git a/Kernel/Arch/x86/common/Boot/multiboot.S b/Kernel/Arch/x86/common/Boot/multiboot.S new file mode 100644 index 00000000000..1d43fa799b1 --- /dev/null +++ b/Kernel/Arch/x86/common/Boot/multiboot.S @@ -0,0 +1,28 @@ +.code32 +.set MULTIBOOT_MAGIC, 0x1badb002 +.set MULTIBOOT_PAGE_ALIGN, 0x1 +.set MULTIBOOT_MEMORY_INFO, 0x2 +.set MULTIBOOT_VIDEO_MODE, 0x4 +.set multiboot_flags, MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO +.set multiboot_checksum, -(MULTIBOOT_MAGIC + multiboot_flags) + +.section .multiboot, "a" +.align 4 + +.long MULTIBOOT_MAGIC +.long multiboot_flags +.long multiboot_checksum + + +/* for MULTIBOOT_MEMORY_INFO */ +.long 0x00000000 /* header_addr */ +.long 0x00000000 /* load_addr */ +.long 0x00000000 /* load_end_addr */ +.long 0x00000000 /* bss_end_addr */ +.long 0x00000000 /* entry_addr */ + +/* for MULTIBOOT_VIDEO_MODE */ +.long 0x00000000 /* mode_type */ +.long 1280 /* width */ +.long 1024 /* height */ +.long 32 /* depth */ diff --git a/Kernel/Arch/x86/i386/Boot/boot.S b/Kernel/Arch/x86/i386/Boot/boot.S index 33e48097df7..8b1b8f53c3a 100644 --- a/Kernel/Arch/x86/i386/Boot/boot.S +++ b/Kernel/Arch/x86/i386/Boot/boot.S @@ -1,31 +1,3 @@ -.set MULTIBOOT_MAGIC, 0x1badb002 -.set MULTIBOOT_PAGE_ALIGN, 0x1 -.set MULTIBOOT_MEMORY_INFO, 0x2 -.set MULTIBOOT_VIDEO_MODE, 0x4 -.set multiboot_flags, MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO -.set multiboot_checksum, -(MULTIBOOT_MAGIC + multiboot_flags) - -.section .multiboot, "a" -.align 4 - -.long MULTIBOOT_MAGIC -.long multiboot_flags -.long multiboot_checksum - - -/* for MULTIBOOT_MEMORY_INFO */ -.long 0x00000000 /* header_addr */ -.long 0x00000000 /* load_addr */ -.long 0x00000000 /* load_end_addr */ -.long 0x00000000 /* bss_end_addr */ -.long 0x00000000 /* entry_addr */ - -/* for MULTIBOOT_VIDEO_MODE */ -.long 0x00000000 /* mode_type */ -.long 1280 /* width */ -.long 1024 /* height */ -.long 32 /* depth */ - .section .stack, "aw", @nobits stack_bottom: .skip 32768 diff --git a/Kernel/Arch/x86/x86_64/Boot/boot.S b/Kernel/Arch/x86/x86_64/Boot/boot.S index 1716536df47..59920cf3aac 100644 --- a/Kernel/Arch/x86/x86_64/Boot/boot.S +++ b/Kernel/Arch/x86/x86_64/Boot/boot.S @@ -1,32 +1,4 @@ .code32 -.set MULTIBOOT_MAGIC, 0x1badb002 -.set MULTIBOOT_PAGE_ALIGN, 0x1 -.set MULTIBOOT_MEMORY_INFO, 0x2 -.set MULTIBOOT_VIDEO_MODE, 0x4 -.set multiboot_flags, MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_VIDEO_MODE -.set multiboot_checksum, -(MULTIBOOT_MAGIC + multiboot_flags) - -.section .multiboot -.align 4 - -.long MULTIBOOT_MAGIC -.long multiboot_flags -.long multiboot_checksum - - -/* for MULTIBOOT_MEMORY_INFO */ -.long 0x00000000 /* header_addr */ -.long 0x00000000 /* load_addr */ -.long 0x00000000 /* load_end_addr */ -.long 0x00000000 /* bss_end_addr */ -.long 0x00000000 /* entry_addr */ - -/* for MULTIBOOT_VIDEO_MODE */ -.long 0x00000000 /* mode_type */ -.long 1280 /* width */ -.long 1024 /* height */ -.long 32 /* depth */ - .section .stack, "aw", @nobits stack_bottom: .skip 32768 diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index b3bfdf8de0c..86d17579b45 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -281,6 +281,7 @@ set(KERNEL_SOURCES set(KERNEL_SOURCES ${KERNEL_SOURCES} ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/ASM_wrapper.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Boot/multiboot.S ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/CPU.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Interrupts.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Arch/x86/common/Processor.cpp