diff --git a/src/arch/8051/arch.c b/src/arch/8051/arch.c new file mode 100644 index 0000000..c7fc8d4 --- /dev/null +++ b/src/arch/8051/arch.c @@ -0,0 +1,20 @@ +#include <8051.h> + +#include + +void external_0(void) __interrupt(0) {} +// timer_0 is in time.c +void external_1(void) __interrupt(2) {} +void timer_1(void) __interrupt(3) {} +void serial(void) __interrupt(4) {} +void timer_2(void) __interrupt(5) {} + +void arch_init(void) { + // Disable interrupts + EA = 0; + + time_init(); + + // Enable interrupts + EA = 1; +} diff --git a/src/arch/8051/include/arch/arch.h b/src/arch/8051/include/arch/arch.h new file mode 100644 index 0000000..6880cf6 --- /dev/null +++ b/src/arch/8051/include/arch/arch.h @@ -0,0 +1,6 @@ +#ifndef _ARCH_ARCH_H +#define _ARCH_ARCH_H + +void arch_init(void); + +#endif // _ARCH_ARCH_H diff --git a/src/arch/8051/include/arch/time.h b/src/arch/8051/include/arch/time.h index 1708165..ee243e6 100644 --- a/src/arch/8051/include/arch/time.h +++ b/src/arch/8051/include/arch/time.h @@ -1,6 +1,8 @@ #ifndef _ARCH_TIME_H #define _ARCH_TIME_H +#include + void time_init(void); uint32_t time_get(void); diff --git a/src/arch/8051/time.c b/src/arch/8051/time.c index 5426e85..2bed354 100644 --- a/src/arch/8051/time.c +++ b/src/arch/8051/time.c @@ -1,7 +1,6 @@ // Uses timer 0 to keep track of global time #include <8051.h> -#include #include @@ -9,7 +8,7 @@ static volatile uint32_t time_overflows = 0; void timer_0(void) __interrupt(1) { time_overflows++; - + // Restart timer TR0 = 0; TF0 = 0; diff --git a/src/board/system76/darp5/main.c b/src/board/system76/darp5/main.c index 4a85f85..c00aeb5 100644 --- a/src/board/system76/darp5/main.c +++ b/src/board/system76/darp5/main.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -20,28 +21,8 @@ uint8_t main_cycle = 0; -void external_0(void) __interrupt(0) { - TRACE("external_0\n"); -} - -void external_1(void) __interrupt(2) { - TRACE("external_1\n"); -} - -void timer_1(void) __interrupt(3) { - TRACE("timer_1\n"); -} - -void serial(void) __interrupt(4) { - TRACE("serial\n"); -} - -void timer_2(void) __interrupt(5) { - TRACE("timer_2\n"); -} - void init(void) { - time_init(); + arch_init(); gpio_init(); gctrl_init(); diff --git a/src/board/system76/galp3-c/main.c b/src/board/system76/galp3-c/main.c index edb439e..0ddd426 100644 --- a/src/board/system76/galp3-c/main.c +++ b/src/board/system76/galp3-c/main.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -21,28 +22,8 @@ uint8_t main_cycle = 0; -void external_0(void) __interrupt(0) { - TRACE("external_0\n"); -} - -void external_1(void) __interrupt(2) { - TRACE("external_1\n"); -} - -void timer_1(void) __interrupt(3) { - TRACE("timer_1\n"); -} - -void serial(void) __interrupt(4) { - TRACE("serial\n"); -} - -void timer_2(void) __interrupt(5) { - TRACE("timer_2\n"); -} - void init(void) { - time_init(); + arch_init(); gpio_init(); gctrl_init(); diff --git a/src/board/system76/lemp9/main.c b/src/board/system76/lemp9/main.c index edb439e..0ddd426 100644 --- a/src/board/system76/lemp9/main.c +++ b/src/board/system76/lemp9/main.c @@ -2,6 +2,7 @@ #include #include +#include #include #include #include @@ -21,28 +22,8 @@ uint8_t main_cycle = 0; -void external_0(void) __interrupt(0) { - TRACE("external_0\n"); -} - -void external_1(void) __interrupt(2) { - TRACE("external_1\n"); -} - -void timer_1(void) __interrupt(3) { - TRACE("timer_1\n"); -} - -void serial(void) __interrupt(4) { - TRACE("serial\n"); -} - -void timer_2(void) __interrupt(5) { - TRACE("timer_2\n"); -} - void init(void) { - time_init(); + arch_init(); gpio_init(); gctrl_init();