aboutsummaryrefslogtreecommitdiff
path: root/kernel/bug/panic.c
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-01-24 20:10:45 +0100
committerJakob Odersky <jodersky@gmail.com>2014-01-24 20:10:45 +0100
commit6cdf34b0e87bc915de39a6d5817980a825a720da (patch)
tree1b8710106c0201ecad5e199099b4f084795b96ea /kernel/bug/panic.c
downloadmux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.gz
mux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.bz2
mux-6cdf34b0e87bc915de39a6d5817980a825a720da.zip
initial commit
Diffstat (limited to 'kernel/bug/panic.c')
-rw-r--r--kernel/bug/panic.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/kernel/bug/panic.c b/kernel/bug/panic.c
new file mode 100644
index 0000000..c82d0f0
--- /dev/null
+++ b/kernel/bug/panic.c
@@ -0,0 +1,23 @@
+#include "bug/panic.h"
+#include "bug/debug.h"
+#include <avr/interrupt.h>
+
+static inline void wait() {
+ for (volatile long i = 0; i < 20000; ++i) {};
+}
+
+void panic() {
+ cli();
+ while(1) {
+ for(int i = 0; i < DEBUG_LEDS; ++i) {
+ debug_led((i - 1) % DEBUG_LEDS, 0);
+ debug_led(i, 1);
+ wait();
+ }
+ for(int i = DEBUG_LEDS - 1; i >= 0; --i) {
+ debug_led((i + 1) % DEBUG_LEDS, 0);
+ debug_led(i, 1);
+ wait();
+ }
+ }
+} \ No newline at end of file