//----------------------------------------------------------------------------// // GNU GPL OS/K // // // // Desc: Kernel panic and crash stuff // // // // // // Copyright © 2018-2019 The OS/K Team // // // // This file is part of OS/K. // // // // OS/K is free software: you can redistribute it and/or modify // // it under the terms of the GNU General Public License as published by // // the Free Software Foundation, either version 3 of the License, or // // any later version. // // // // OS/K is distributed in the hope that it will be useful, // // but WITHOUT ANY WARRANTY//without even the implied warranty of // // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // // GNU General Public License for more details. // // // // You should have received a copy of the GNU General Public License // // along with OS/K. If not, see . // //----------------------------------------------------------------------------// #ifndef _KALKERN_BASE_H #include #endif #ifndef _KALKERN_PANIC_H #define _KALKERN_PANIC_H //------------------------------------------// // Can't use the macro because panicStr is an array static inline char *GetPanicStr(void) { return GetCurCPU().panicStr; } //------------------------------------------// // // Disable IRQs // #define DisableIRQs() asm volatile ("cli") // // Enable IRQs // #define EnableIRQs() asm volatile ("sti") // // Pause CPU until next interuption // !!! Enables IRQs !!! // #define PauseCPU() asm volatile ("sti\n\thlt") // // Halt the CPU indefinitely // #define HaltCPU() do { asm volatile ("hlt"); } while (1) //------------------------------------------// noreturn void StartPanic(const char *, ...); noreturn void CrashSystem(void); //------------------------------------------// #endif