Kernel - x86 Fixed a couple of bugs
[tpg/acess2.git] / Kernel / arch / x86 / kpanic.c
index 6454eca..ccb1073 100644 (file)
@@ -6,11 +6,16 @@
 
 #include <acess.h>
 
+
+
 #define        FB      ((Uint16 *)(KERNEL_BASE|0xB8000))
 #define BGC    0x4F00  // White on Red
 //#define BGC  0xC000  // Black on Bright Red
 //#define BGC  0x1F00  // White on Blue (BSOD!)
 
+extern Uint32  GetEIP(void);
+extern void    Error_Backtrace(Uint32 eip, Uint32 ebp);
+
  int   giKP_Pos = 0;
 
 const struct {
@@ -52,6 +57,11 @@ const struct {
 };
 #define        NUM_REGVALUES   (sizeof(caRegValues)/sizeof(caRegValues[0]))
 
+// === PROTOTYPES ===
+void   KernelPanic_SetMode(void);
+void   KernelPanic_PutChar(char Ch);
+
+// === CODE ===
 /**
  * \brief Sets the screen mode for a kernel panic
  */
@@ -85,6 +95,13 @@ void KernelPanic_SetMode(void)
        {
                FB[i] = BGC;
        }
+       
+       {
+               Uint32  eip = GetEIP();
+               Uint32  ebp;
+               __asm__ __volatile__ ("mov %%ebp, %0" : "=r" (ebp));
+               Error_Backtrace(eip, ebp);
+       }
 }
 
 void KernelPanic_PutChar(char Ch)

UCC git Repository :: git.ucc.asn.au