X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Kernel%2Farch%2Fx86%2Ferrors.c;h=8b518f87d02cec041ee86b481edf9d225a63ded0;hb=7514bb8053931759b99f77d3f9ad70446b0625ac;hp=b9ff17d22f1eaec052d3fdd99e2d8c9c8da17867;hpb=b6c3b3cf61caafbd91bbf3acc81995e472656a5b;p=tpg%2Facess2.git diff --git a/Kernel/arch/x86/errors.c b/Kernel/arch/x86/errors.c index b9ff17d2..8b518f87 100644 --- a/Kernel/arch/x86/errors.c +++ b/Kernel/arch/x86/errors.c @@ -3,7 +3,7 @@ * arch/x86/errors.c * - CPU Error Handler */ -#include +#include #include // === CONSTANTS === @@ -17,6 +17,12 @@ extern void Threads_Dump(); void Error_Backtrace(Uint eip, Uint ebp); // === CODE === +void __stack_chk_fail() +{ + Panic("FATAL ERROR: Stack Check Failed\n"); + for(;;); +} + /** * \fn void ErrorHandler(tRegs *Regs) * \brief General Error Handler @@ -112,3 +118,31 @@ void Error_Backtrace(Uint eip, Uint ebp) } LogF("\n"); } + +/** + * \fn void StartupPrint(char *Str) + */ +void StartupPrint(char *Str) +{ + Uint16 *buf = (void*)0xC00B8000; + int i = 0; + static int line = 0; + while(*Str) + { + buf[line*80 + i++] = *Str | 0x0700; + Str ++; + } + + while(i < 80) buf[line*80 + i++] = 0x0720; + + line ++; + if(line == 25) + { + line --; + memcpy(buf, &buf[80], 80*24*2); + memset(&buf[80*24], 0, 80*2); + } +} + +// === EXPORTS === +EXPORT(__stack_chk_fail);