Kernel - Replaced for(;;); in panic with HALT_CPU macro
authorJohn Hodge <[email protected]>
Wed, 6 Nov 2013 04:00:34 +0000 (12:00 +0800)
committerJohn Hodge <[email protected]>
Wed, 6 Nov 2013 04:00:34 +0000 (12:00 +0800)
KernelLand/Kernel/arch/x86/include/arch.h
KernelLand/Kernel/debug.c
KernelLand/Kernel/include/acess.h

index 6586845..1474269 100644 (file)
@@ -66,6 +66,8 @@ struct sShortSpinlock {
  * \brief Fire a magic breakpoint (bochs)
  */
 #define        MAGIC_BREAK()   __asm__ __volatile__ ("xchg %bx, %bx")
+// TODO: SMP halt request too
+#define HALT_CPU()     for(;;) { __asm__ __volatile__ ("cli; hlt"); }
 
 // === TYPES ===
 typedef unsigned int   Uint;   // Unsigned machine native integer
index a378ae8..70f503a 100644 (file)
@@ -123,7 +123,7 @@ void Debug_KernelPanic(void)
        }
        // 5 nested panics? Fuck it
        if( gbDebug_IsKPanic > 5 )
-               for(;;);
+               HALT_CPU();
        gbDebug_IsKPanic ++;
        KernelPanic_SetMode();
 }
@@ -254,7 +254,7 @@ void Panic(const char *Fmt, ...)
        //Threads_Dump();
        //Heap_Dump();
 
-       for(;;) ;
+       HALT_CPU();
 }
 
 void Debug_SetKTerminal(const char *File)
index 8c5e454..a43e5c0 100644 (file)
 #include <stddef.h>
 #include <arch.h>
 
+#ifndef HALT_CPU
+# define HALT_CPU()    for(;;);
+#endif
+
 //! Pack a structure
 #define PACKED __attribute__((packed))
 //! Mark a function as not returning

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