aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/sys/schedule.h2
-rw-r--r--src/cpu/irq.c11
-rw-r--r--src/exceptions/irq.S2
3 files changed, 5 insertions, 10 deletions
diff --git a/include/sys/schedule.h b/include/sys/schedule.h
index 52f3c98..18b2f7f 100644
--- a/include/sys/schedule.h
+++ b/include/sys/schedule.h
@@ -2,7 +2,7 @@
#define SYS_SCHEDULE_H
#include <lib/queue.h>
-#define TQUEUE_MAX 5
+#define TQUEUE_MAX 0x800
#define STACK_SIZE 0x4000
#define TQUEUE_CNT 3
#define PRIORITIES 8
diff --git a/src/cpu/irq.c b/src/cpu/irq.c
index b2d9a71..4708293 100644
--- a/src/cpu/irq.c
+++ b/src/cpu/irq.c
@@ -56,16 +56,11 @@ void c_irq_handler(void)
}
}
// Check if System Time Compare 0 Triggered the Interrupt
- else if (*(volatile unsigned long*)SYS_TIMER_CS & SYS_TIMER_SC_M0) {
+ if (*(volatile unsigned long*)SYS_TIMER_CS & SYS_TIMER_SC_M0) {
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;
- static char timer_lock = 0;
- if (!timer_lock) {
- timer_lock = 1;
- add_thread_without_duplicate(test_entry, 0, 2);
- timer_lock = 0;
- }
+ add_thread_without_duplicate(test_entry, 0, 2);
*nexttime = *timer_chi + 8000000;
*timer_cs = SYS_TIMER_SC_M0;
}
@@ -88,7 +83,7 @@ unsigned long c_fiq_handler(void)
counter++;
if (counter % 0x6000 == 0)
counter = 0;
- if (counter % 0x10 == 0)
+ if (counter % 0x08 == 0)
status();
if (counter % 0x40 == 0)
return 1;
diff --git a/src/exceptions/irq.S b/src/exceptions/irq.S
index db8b4cd..2c1a6e8 100644
--- a/src/exceptions/irq.S
+++ b/src/exceptions/irq.S
@@ -1,7 +1,7 @@
.section ".text.exceptions"
.globl irq
irq:
- cpsid aif
+ cpsid ai
push {r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,lr}
// Run IRQ handler
bl c_irq_handler