From 13b239faf1c7f1d21fd4b0b774ea90c97c536623 Mon Sep 17 00:00:00 2001 From: Christian Cunningham Date: Sun, 23 Jan 2022 13:15:31 -0700 Subject: Fixed argument --- src/cpu/irq.c | 7 +++++++ src/sys/schedule.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cpu/irq.c b/src/cpu/irq.c index 1b5e09f..fd0cbd5 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -12,6 +12,7 @@ #include void localtest(void); +void uarttest(unsigned char); void c_irq_handler(void) { @@ -90,6 +91,7 @@ void c_irq_handler(void) } else { cmd[off] = (char) data; off += 1; + add_thread(uarttest, (void*)data, 2); } } else if (off == 2048) { if (data == 0x0D) { @@ -246,3 +248,8 @@ unsigned long c_fiq_handler(void) void localtest(void) { } + +void uarttest(unsigned char a) +{ + uart_char(a); +} diff --git a/src/sys/schedule.c b/src/sys/schedule.c index ebf60bc..ad7feec 100644 --- a/src/sys/schedule.c +++ b/src/sys/schedule.c @@ -77,9 +77,9 @@ void add_thread(void* pc, void* arg, unsigned char priority) if (r.sp) { thread->sp_base = r.idx; unsigned long* argp = r.sp; - argp -= 1; - *argp = (unsigned long)arg; // Set r0 to the argument argp -= 13; + *argp = (unsigned long)arg; // Set r0 to the argument + argp -= 1; *(unsigned long**)argp = (unsigned long*)cleanup; // Set lr to the cleanup function thread->sp = (void*)argp; thread->status = THREAD_READY; -- cgit v1.2.1