X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/f1036cb8c8899f38e97e45d345a0c28585d9a000..7b0dccbab69e806a63c4504c3ddb82e45241985b:/lunaix-os/kernel/spike.c?ds=sidebyside diff --git a/lunaix-os/kernel/spike.c b/lunaix-os/kernel/spike.c new file mode 100644 index 0000000..91f597d --- /dev/null +++ b/lunaix-os/kernel/spike.c @@ -0,0 +1,19 @@ +#include +#include +#include + +static char buffer[1024]; + +void __assert_fail(const char* expr, const char* file, unsigned int line) { + sprintf(buffer, "Assert %s failed (%s:%u)", expr, file, line); + + // Here we load the buffer's address into %edi ("D" constraint) + // This is a convention we made that the LUNAIX_SYS_PANIC syscall will + // print the panic message passed via %edi. (see kernel/asm/x86/interrupts.c) + asm( + "int %0" + ::"i"(LUNAIX_SYS_PANIC), "D"(buffer) + ); + + spin(); // never reach +} \ No newline at end of file