aboutsummaryrefslogtreecommitdiff
path: root/kernel/bug
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
downloadmux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.gz
mux-6cdf34b0e87bc915de39a6d5817980a825a720da.tar.bz2
mux-6cdf34b0e87bc915de39a6d5817980a825a720da.zip
initial commit
Diffstat (limited to 'kernel/bug')
-rw-r--r--kernel/bug/debug.c6
-rw-r--r--kernel/bug/include/bug/debug.h8
-rw-r--r--kernel/bug/include/bug/panic.h6
-rw-r--r--kernel/bug/panic.c23
4 files changed, 43 insertions, 0 deletions
diff --git a/kernel/bug/debug.c b/kernel/bug/debug.c
new file mode 100644
index 0000000..10a67d8
--- /dev/null
+++ b/kernel/bug/debug.c
@@ -0,0 +1,6 @@
+#include "bug/debug.h"
+#include "tshield/tshield.h"
+
+void debug_led(int led, int value) {
+ tshield_led(led, value);
+} \ No newline at end of file
diff --git a/kernel/bug/include/bug/debug.h b/kernel/bug/include/bug/debug.h
new file mode 100644
index 0000000..937ff2c
--- /dev/null
+++ b/kernel/bug/include/bug/debug.h
@@ -0,0 +1,8 @@
+#ifndef DEBUG_H
+#define DEBUG_H
+
+#define DEBUG_LEDS 4
+
+void debug_led(int led, int value);
+
+#endif \ No newline at end of file
diff --git a/kernel/bug/include/bug/panic.h b/kernel/bug/include/bug/panic.h
new file mode 100644
index 0000000..2a39076
--- /dev/null
+++ b/kernel/bug/include/bug/panic.h
@@ -0,0 +1,6 @@
+#ifndef PANIC_H
+#define PANIC_H
+
+void panic();
+
+#endif \ No newline at end of file
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