#include "arch/video/vga/text.hpp" namespace teachos::arch::exception_handling { auto assert(bool condition, char const * message) -> void { if (condition) { return; } video::vga::text::write("Assert failed: ", video::vga::text::common_attributes::green_on_black); video::vga::text::write(message, video::vga::text::common_attributes::green_on_black); for (;;) { // Trick the compiler into thinking the variable is changes at run time, // to prevent the while loop being optimized away // See // https://stackoverflow.com/questions/9495856/how-to-prevent-g-from-optimizing-out-a-loop-controlled-by-a-variable-that-can // for more information. asm volatile("" : "+g"(condition)); } } } // namespace teachos::arch::exception_handling