diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/irq.c | 6 | ||||
-rw-r--r-- | src/usr/main.c | 25 |
2 files changed, 28 insertions, 3 deletions
diff --git a/src/cpu/irq.c b/src/cpu/irq.c index dcca9e8..d3eefa2 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -9,6 +9,7 @@ #include <util/mutex.h> #include <util/status.h> #include <util/time.h> +#include <usr/main.h> #define CPS 1000 @@ -59,10 +60,9 @@ unsigned long c_irq_handler(void) volatile unsigned long* timer_cs = (volatile unsigned long*)SYS_TIMER_CS; volatile unsigned long* timer_chi = (volatile unsigned long*)SYS_TIMER_CHI; volatile unsigned long* nexttime = (volatile unsigned long*)SYS_TIMER_C0; - add_thread_without_duplicate(test_entry, 0, 2); - *nexttime = *timer_chi + 4000000; + add_thread_without_duplicate(main, 0, 0); + *nexttime = *timer_chi + 40; *timer_cs = SYS_TIMER_SC_M0; - status(); return 1; } } diff --git a/src/usr/main.c b/src/usr/main.c new file mode 100644 index 0000000..67b9c3a --- /dev/null +++ b/src/usr/main.c @@ -0,0 +1,25 @@ +#include <graphics/lfb.h> +#include <symbols.h> + +char* ulong_to_string(unsigned long value, char* data) +{ + unsigned long t = value; + unsigned long c; + char* dptr = data + 9; + for (int i = 0; i <= 10; i++) { + c = t%10; + *dptr = 0x30 + (c&0xF); + t /= 10; + if (t==0) + break; + dptr -= 1; + } + return dptr; +} + +void main(void) +{ + static char str[13]; + char* start = ulong_to_string(*(volatile unsigned long*)SYS_TIMER_CHI, str); + draw_string(0, 10, start); +} |