source: rtems/c/src/lib/libbsp/arm/lpc24xx/irq/irq-dispatch.c @ 14ee5a1e

4.115
Last change on this file since 14ee5a1e was 14ee5a1e, checked in by Sebastian Huber <sebastian.huber@…>, on 02/11/12 at 20:10:12

Support for NXP LPC1700 family

  • Property mode set to 100644
File size: 1.2 KB
Line 
1/**
2 * @file
3 *
4 * @ingroup bsp_interrupt
5 *
6 * @brief LPC24XX interrupt support.
7 */
8
9/*
10 * Copyright (c) 2008-2012 embedded brains GmbH.  All rights reserved.
11 *
12 *  embedded brains GmbH
13 *  Obere Lagerstr. 30
14 *  82178 Puchheim
15 *  Germany
16 *  <rtems@embedded-brains.de>
17 *
18 * The license and distribution terms for this file may be
19 * found in the file LICENSE in this distribution or at
20 * http://www.rtems.com/license/LICENSE.
21 */
22
23#include <rtems/score/armv7m.h>
24
25#include <bsp.h>
26#include <bsp/irq.h>
27#include <bsp/irq-generic.h>
28#include <bsp/lpc24xx.h>
29
30void bsp_interrupt_dispatch(void)
31{
32  #ifdef ARM_MULTILIB_ARCH_V4
33    /* Read current vector number */
34    rtems_vector_number vector = VICVectAddr;
35
36    /* Enable interrupts in program status register */
37    uint32_t psr = arm_status_irq_enable();
38
39    /* Dispatch interrupt handlers */
40    bsp_interrupt_handler_dispatch(vector);
41
42    /* Restore program status register */
43    arm_status_restore(psr);
44
45    /* Acknowledge interrupt */
46    VICVectAddr = 0;
47  #else
48    rtems_vector_number vector =
49      ARMV7M_SCB_ICSR_VECTACTIVE_GET(_ARMV7M_SCB->icsr);
50
51    _ARMV7M_Interrupt_service_enter();
52    bsp_interrupt_handler_dispatch(ARMV7M_IRQ_OF_VECTOR(vector));
53    _ARMV7M_Interrupt_service_leave();
54  #endif
55}
Note: See TracBrowser for help on using the repository browser.