diff --git a/bsp/jz47xx/uart.c b/bsp/jz47xx/uart.c index e13bb1a98a9fd39d13622908d661a8b663896ef6..9ddbb02e1aa7c266bb06fc2b7b6a1a3d1a785eb5 100644 --- a/bsp/jz47xx/uart.c +++ b/bsp/jz47xx/uart.c @@ -128,7 +128,7 @@ struct rt_uart_jz rt_uint8_t rx_buffer[RT_UART_RX_BUFFER_SIZE]; }uart_device; -static void rt_uart_irqhandler(void) +static void rt_uart_irqhandler(int irqno) { rt_ubase_t level, isr; struct rt_uart_jz* uart = &uart_device; diff --git a/libcpu/mips/jz47xx/jz47xx.h b/libcpu/mips/jz47xx/jz47xx.h index 8f60d33d2cf621490f3c14db50c6ebd29e16505c..a0e7e0832220d7afad595e6ed2663b07e93a1172 100644 --- a/libcpu/mips/jz47xx/jz47xx.h +++ b/libcpu/mips/jz47xx/jz47xx.h @@ -91,6 +91,6 @@ #define IRQ_GPIO0 28 #define IRQ_LCD 30 -#define SYSTEM_STACK 0x8000ffe8 /* the kernel system stack address */ +#define SYSTEM_STACK 0x80003fe8 /* the kernel system stack address */ #endif diff --git a/libcpu/mips/jz47xx/stack.c b/libcpu/mips/jz47xx/stack.c index c1576072b108b2028908cf731fc1a1152b296221..947408354db525fa1986cedf62ccdafb447b40d0 100644 --- a/libcpu/mips/jz47xx/stack.c +++ b/libcpu/mips/jz47xx/stack.c @@ -53,7 +53,8 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, void *parameter, rt_uint8_t *stack_ad *(--stk) = (rt_uint32_t) 0xffff; /* c0_badvaddr */ *(--stk) = (rt_uint32_t) cp0_get_lo(); /* lo */ *(--stk) = (rt_uint32_t) cp0_get_hi(); /* hi */ - *(--stk) = (rt_uint32_t) g_sr; /* C0_SR: HW2 = En, IE = En */ + // *(--stk) = (rt_uint32_t) g_sr; /* C0_SR: HW2 = En, IE = En */ + *(--stk) = (rt_uint32_t) 0xFC01; /* C0_SR: HW2 = En, IE = En */ *(--stk) = (rt_uint32_t) texit; /* ra */ *(--stk) = (rt_uint32_t) 0x0000001e; /* s8 */ *(--stk) = (rt_uint32_t) stack_addr; /* sp */ diff --git a/libcpu/mips/jz47xx/start_gcc.S b/libcpu/mips/jz47xx/start_gcc.S index 97bedb6c7f05f72a35756dd537e12bace5fdb6a4..d496b54e92886cea9efa225ae4c632ccb14b75ba 100644 --- a/libcpu/mips/jz47xx/start_gcc.S +++ b/libcpu/mips/jz47xx/start_gcc.S @@ -20,7 +20,7 @@ _start: la ra, _start /* init cp0 registers. */ - li t0, 0x0040FC00 + li t0, 0x0000FC00 /* BEV = 0 and mask all interrupt */ mtc0 t0, CP0_STATUS li t1, 0x00800000