diff --git a/bsp/qemu-vexpress-a9/cpu/context_gcc.S b/bsp/qemu-vexpress-a9/cpu/context_gcc.S index 694fb96e720202ffc57864f5dd9da34ad903fce7..0aad0200d558acdf4acbe9a04bb2628867c7e7a9 100644 --- a/bsp/qemu-vexpress-a9/cpu/context_gcc.S +++ b/bsp/qemu-vexpress-a9/cpu/context_gcc.S @@ -117,7 +117,7 @@ rt_hw_context_switch: ldmfd sp!, {r0-r12, lr, pc}^ @ pop new task r0-r12, lr & pc, copy spsr to cpsr /* - * void rt_hw_context_switch_interrupt(rt_uint32 from, rt_uint32 to); + * void rt_hw_context_switch_interrupt(rt_ubase_t from, rt_ubase_t to); */ .equ Mode_USR, 0x10 .equ Mode_FIQ, 0x11 diff --git a/bsp/qemu-vexpress-a9/cpu/cpuport.c b/bsp/qemu-vexpress-a9/cpu/cpuport.c index 22ba8346da8226dab028bc3ebe8b9e50445d1c31..6b129f89eee4334361781d13c5a3c5409460c5fe 100644 --- a/bsp/qemu-vexpress-a9/cpu/cpuport.c +++ b/bsp/qemu-vexpress-a9/cpu/cpuport.c @@ -60,14 +60,8 @@ void rt_hw_spin_unlock(rt_hw_spinlock_t *lock) lock->tickets.owner++; __asm__ volatile ("dsb ishst\nsev":::"memory"); } - #endif /*RT_USING_SMP*/ -void idle_wfi(void) -{ - asm volatile ("wfi"); -} - /** * @addtogroup ARM CPU */ diff --git a/bsp/qemu-vexpress-a9/cpu/interrupt.c b/bsp/qemu-vexpress-a9/cpu/interrupt.c index d553188e931c57584fd1e9f9e0f4e1e8d0c224aa..d7e9ec08fa4531d4088ea31f866a911e8f359e4f 100644 --- a/bsp/qemu-vexpress-a9/cpu/interrupt.c +++ b/bsp/qemu-vexpress-a9/cpu/interrupt.c @@ -25,9 +25,9 @@ struct rt_irq_desc isr_table[MAX_HANDLERS]; #ifndef RT_USING_SMP /* Those varibles will be accessed in ISR, so we need to share them. */ -rt_uint32_t rt_interrupt_from_thread; -rt_uint32_t rt_interrupt_to_thread; -rt_uint32_t rt_thread_switch_interrupt_flag; +rt_uint32_t rt_interrupt_from_thread = 0; +rt_uint32_t rt_interrupt_to_thread = 0; +rt_uint32_t rt_thread_switch_interrupt_flag = 0; #endif const unsigned int VECTOR_BASE = 0x00; @@ -59,13 +59,6 @@ void rt_hw_interrupt_init(void) arm_gic_dist_init(0, gic_dist_base, 0); arm_gic_cpu_init(0, gic_cpu_base); - - /* init interrupt nest, and context in thread sp */ -#ifndef RT_USING_SMP - rt_interrupt_from_thread = 0; - rt_interrupt_to_thread = 0; - rt_thread_switch_interrupt_flag = 0; -#endif } /** diff --git a/bsp/qemu-vexpress-a9/drivers/board.c b/bsp/qemu-vexpress-a9/drivers/board.c index 26445d33f1344806e9595d03a31fd35069b331ea..6ffac7efd74aa981636ae11919d82dd32bbe9629 100644 --- a/bsp/qemu-vexpress-a9/drivers/board.c +++ b/bsp/qemu-vexpress-a9/drivers/board.c @@ -19,9 +19,13 @@ #define SYS_CTRL __REG32(REALVIEW_SCTL_BASE) -extern void idle_wfi(void); extern void rt_hw_ipi_handler_install(int ipi_vector, rt_isr_handler_t ipi_isr_handler); +void idle_wfi(void) +{ + asm volatile ("wfi"); +} + /** * This function will initialize beaglebone board */ @@ -42,4 +46,3 @@ void rt_hw_board_init(void) rt_hw_ipi_handler_install(RT_SCHEDULE_IPI, rt_scheduler_ipi_handler); #endif } -