1 /* 2 * Copyright (c) 2006-2018, RT-Thread Development Team 3 * 4 * SPDX-License-Identifier: Apache-2.0 5 * 6 * Change Logs: 7 * Date Author Notes 8 * 2006-08-25 Bernard first version 9 */ 10 11 #include <rtthread.h> 12 #include <rthw.h> 13 14 #include "AT91SAM7X256.h" 15 16 /** 17 * @addtogroup AT91SAM7 18 */ 19 /*@{*/ 20 rt_hw_trap_irq(void)21void rt_hw_trap_irq(void) 22 { 23 int irqno; 24 extern struct rt_irq_desc irq_desc[]; 25 26 /* get interrupt number */ 27 irqno = AT91C_BASE_AIC->AIC_ISR; 28 29 /* invoke isr with parameters */ 30 irq_desc[irqno].handler(irqno, irq_desc[irqno].param); 31 32 /* end of interrupt */ 33 AT91C_BASE_AIC->AIC_EOICR = 0; 34 } 35 rt_hw_trap_fiq(void)36void rt_hw_trap_fiq(void) 37 { 38 rt_kprintf("fast interrupt request\n"); 39 } 40 41 extern struct rt_thread* rt_current_thread; rt_hw_trap_abort(void)42void rt_hw_trap_abort(void) 43 { 44 rt_kprintf("Abort occured!!! Thread [%s] suspended.\n",rt_current_thread->name); 45 rt_thread_suspend(rt_current_thread); 46 rt_schedule(); 47 48 } 49 /*@}*/ 50