diff options
Diffstat (limited to 'c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h')
-rw-r--r-- | c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h | 124 |
1 files changed, 0 insertions, 124 deletions
diff --git a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h b/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h deleted file mode 100644 index 65af48c87f..0000000000 --- a/c/src/lib/libcpu/powerpc/new-exceptions/bspsupport/irq_supp.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - */ - -#ifndef IRQ_SHARED_IRQ_C_GLUE_H -#define IRQ_SHARED_IRQ_C_GLUE_H -/* - * This header describes the routines that are needed by the shared - * version of 'irq.c' (implementing the RTEMS irq API). They - * must be provided by the BSP. - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rtems.org/license/LICENSE. - * - */ - -#ifndef BSP_SHARED_HANDLER_SUPPORT -#define BSP_SHARED_HANDLER_SUPPORT 1 -#endif - -#include <rtems.h> -#include <rtems/irq.h> - -#include <bsp/vectors.h> - -#ifdef __cplusplus -extern "C" { -#endif - -/* - * PIC-independent functions to enable/disable interrupt lines at - * the pic. - * - * NOTE: the routines must ignore requests for enabling/disabling - * interrupts that are outside of the range handled by the - * PIC(s). - */ -extern void BSP_enable_irq_at_pic(const rtems_irq_number irqLine); -/* - * RETURNS: nonzero (> 0 ) if irq was enabled originally, zero if irq - * was off and negative value if there was an error. - */ -extern int BSP_disable_irq_at_pic(const rtems_irq_number irqLine); - -/* - * Initialize the PIC. - */ -extern int BSP_setup_the_pic(rtems_irq_global_settings* config); - -/* IRQ dispatcher to be defined by the PIC driver; note that it MUST - * implement shared interrupts. - * Note also that the exception frame passed to this handler is not very - * meaningful. Only the volatile registers and vector info are stored. - * - ******************************************************************* - * The routine must return zero if the interrupt was handled. If a - * nonzero value is returned the dispatcher may panic and flag an - * uncaught exception. - ******************************************************************* - */ -int C_dispatch_irq_handler (BSP_Exception_frame *frame, unsigned int excNum); - -/* - * Snippet to be used by PIC drivers and by bsp_irq_dispatch_list - * traverses list of shared handlers for a given interrupt - * - */ - -static inline void -bsp_irq_dispatch_list_base( - rtems_irq_connect_data *tbl, - unsigned irq, - rtems_irq_hdl sentinel -) -{ - rtems_irq_connect_data* vchain; - for( vchain = &tbl[irq]; - ((intptr_t)vchain != -1 && vchain->hdl != sentinel); - vchain = (rtems_irq_connect_data*)vchain->next_handler ) - { - vchain->hdl(vchain->handle); - } -} - - -/* - * Snippet to be used by PIC drivers; - * enables interrupts, traverses list of - * shared handlers for a given interrupt - * and restores original irq level - * - * Note that _ISR_Get_level() & friends are preferable to - * manipulating MSR directly. - */ - -static inline void -bsp_irq_dispatch_list( - rtems_irq_connect_data *tbl, - unsigned irq, - rtems_irq_hdl sentinel -) -{ - register uint32_t l_orig; - - l_orig = _ISR_Get_level(); - - /* Enable all interrupts */ - _ISR_Set_level(0); - - - bsp_irq_dispatch_list_base( tbl, irq, sentinel ); - - /* Restore original level */ - _ISR_Set_level(l_orig); -} - -#ifdef __cplusplus -} -#endif - -#endif |