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