diff options
Diffstat (limited to 'src/cpu/irq.c')
-rw-r--r-- | src/cpu/irq.c | 104 |
1 files changed, 4 insertions, 100 deletions
diff --git a/src/cpu/irq.c b/src/cpu/irq.c index fd0cbd5..1a743ff 100644 --- a/src/cpu/irq.c +++ b/src/cpu/irq.c @@ -78,12 +78,8 @@ void c_irq_handler(void) cmd[off] = (char) data; off += 1; release_mutex(&exe_cnt_m, SYS_PID); - // New Task Case - } else if (data == 0x61) { - cmd[off] = (char) data; - off += 1; - add_thread(localtest, 0, 0); - } else if (data == 0x62) { + // heap Info + } else if (data == 0x69) { cmd[off] = (char) data; off += 1; add_thread(heap_info, 0, 5); @@ -137,98 +133,7 @@ static unsigned long counter = 0; unsigned long c_fiq_handler(void) { unsigned long source = load32(CORE0_FIQ_SOURCE); - if (source & (1 << 8)) { - if(load32(IRQ_PENDING2) & (1 << 25)) { - if(load32(UART0_MIS) & (1<<4)) { - unsigned long data = load32(UART0_DR); - // Ctrl+Tab to toggle timer - if(data == 0x14) { - unsigned long timer_status; - asm volatile("mrc p15, 0, %0, c14, c3, 1" : "=r"(timer_status)); - unsigned int x = g_Drawer.x; - unsigned int y = g_Drawer.y; - g_Drawer.x = 0; - g_Drawer.y = 5; - write_string(&g_Drawer, "TIMER: "); - if(timer_status == 0) { - cntfrq = read_cntfrq(); - write_cntv_tval(cntfrq/CPS); - enablecntv(); - write_cstring(&g_Drawer, "Enabled ", 0x00FF00); - } else { - disablecntv(); - write_cstring(&g_Drawer, "Disabled", 0xFF0000); - } - g_Drawer.x = x; - g_Drawer.y = y; - } else { - unsigned long off = cmdidx; - if (off < 2048) { - // Newline Case - if (data == 0x0D) { - for(int i = off; i>=0;i--) - cmd[i] = 0x0; - off = 0; - // Backspace Case - } else if (data == 0x08 || data == 0x7F) { - if (off > 0) { - off -= 1; - } - cmd[off] = 0x0; - // Lock Case - } else if (data == 0x6C) { - cmd[off] = (char) data; - off += 1; - lock_mutex(&exe_cnt_m, SYS_PID); - // Release Case - } else if (data == 0x72) { - cmd[off] = (char) data; - off += 1; - release_mutex(&exe_cnt_m, SYS_PID); - // New Task Case - } else if (data == 0x61) { - cmd[off] = (char) data; - off += 1; - //_start(); // Trigger reset - //heap_info_u(); - // Else output - } else { - cmd[off] = (char) data; - off += 1; - } - } else if (off == 2048) { - if (data == 0x0D) { - for(int i = off; i>=0;i--) - cmd[i] = 0x0; - off = 0; - } else if (data == 0x08 || data == 0x7F) { - if (off > 0) { - off -= 1; - } - cmd[off] = 0x0; - } - } - cmdidx = off; - } - g_Drawer.x = 0; - g_Drawer.y = 7; - for(int i = 0; i < 128; i++) - write_char(&g_Drawer, ' '); - g_Drawer.x = 0; - g_Drawer.y = 7; - write_string(&g_Drawer, "> "); - write_string(&g_Drawer, cmd); - return 0; - } - } else if (*(unsigned long*)SYS_TIMER_CS == SYS_TIMER_SC_M0) { - volatile unsigned long* timer_cs = (unsigned long*)SYS_TIMER_CS; - volatile unsigned long* timer_chi = (unsigned long*)SYS_TIMER_CHI; - volatile unsigned long* nexttime = (unsigned long*)SYS_TIMER_C0; - *timer_cs = SYS_TIMER_SC_M0; - //*nexttime = *timer_chi + 60000000; - *nexttime = *timer_chi + 10000; - } - } else if (source & (1 << 3)) { + if (source & (1 << 3)) { c_timer(); counter++; if (counter % 0x100 == 0) { @@ -236,8 +141,7 @@ unsigned long c_fiq_handler(void) } else if (counter % 0x6000 == 0) { counter = 0; } - if (counter % 0x60 == 0) { - //uart_scheduler(); + if (counter % 0x30 == 0) { return 1; } return 0; |