diff --git a/kernel/include/boot/boot_32.hpp b/kernel/include/boot/boot_32.hpp index 84ea040a..1ba2673b 100644 --- a/kernel/include/boot/boot_32.hpp +++ b/kernel/include/boot/boot_32.hpp @@ -8,6 +8,10 @@ #ifndef BOOT_32_HPP #define BOOT_32_HPP -void __attribute((section("boot_32_section"), noreturn)) pm_main(); +extern "C" { + +void __attribute((noreturn)) pm_main(); + +} //end of exern "C" #endif diff --git a/kernel/linker.ld b/kernel/linker.ld index e7ee9639..58507c4b 100644 --- a/kernel/linker.ld +++ b/kernel/linker.ld @@ -7,12 +7,12 @@ SECTIONS .text_16 BLOCK(512) : ALIGN(512) { - *(boot_16) + boot_16_64.o(.text) } .text_32 BLOCK(512) : ALIGN(512) { - *(boot_32) + boot_32_64.o(.text) } /* 4K of code */ diff --git a/kernel/src/boot/boot_16.cpp b/kernel/src/boot/boot_16.cpp index 5a005428..d42ef0c2 100644 --- a/kernel/src/boot/boot_16.cpp +++ b/kernel/src/boot/boot_16.cpp @@ -107,7 +107,7 @@ void __attribute__((noreturn)) pm_jump(){ } //end of anonymous namespace -void __attribute__ ((section("boot_16_section"), noreturn)) rm_main(){ +void __attribute__ ((noreturn)) rm_main(){ //Make sure segments are clean reset_segments(); diff --git a/kernel/src/boot/boot_32.cpp b/kernel/src/boot/boot_32.cpp index c1b3c7b3..88ed7579 100644 --- a/kernel/src/boot/boot_32.cpp +++ b/kernel/src/boot/boot_32.cpp @@ -103,6 +103,8 @@ void __attribute__((noreturn)) lm_jump(){ } //end of anonymous namespace +extern "C" { + void pm_main(){ //Update segments set_segments(); @@ -125,3 +127,5 @@ void pm_main(){ //long mode jump lm_jump(); } + +} //end of exern "C"