source: rtems/c/src/lib/libbsp/arm/shared/armv7m/irq/armv7m-irq.c @ c499856

4.115
Last change on this file since c499856 was c499856, checked in by Chris Johns <chrisj@…>, on 03/20/14 at 21:10:47

Change all references of rtems.com to rtems.org.

  • Property mode set to 100644
File size: 1.5 KB
Line 
1/*
2 * Copyright (c) 2011-2012 Sebastian Huber.  All rights reserved.
3 *
4 *  embedded brains GmbH
5 *  Obere Lagerstr. 30
6 *  82178 Puchheim
7 *  Germany
8 *  <rtems@embedded-brains.de>
9 *
10 * The license and distribution terms for this file may be
11 * found in the file LICENSE in this distribution or at
12 * http://www.rtems.org/license/LICENSE.
13 */
14
15#include <rtems/score/armv7m.h>
16
17#include <bsp.h>
18#include <bsp/irq.h>
19#include <bsp/irq-generic.h>
20#include <bsp/linker-symbols.h>
21#include <bsp/armv7m-irq.h>
22
23#ifdef ARM_MULTILIB_ARCH_V7M
24
25rtems_status_code bsp_interrupt_vector_enable(rtems_vector_number vector)
26{
27  _ARMV7M_NVIC_Set_enable((int) vector);
28
29  return RTEMS_SUCCESSFUL;
30}
31
32rtems_status_code bsp_interrupt_vector_disable(rtems_vector_number vector)
33{
34  _ARMV7M_NVIC_Clear_enable((int) vector);
35
36  return RTEMS_SUCCESSFUL;
37}
38
39rtems_status_code bsp_interrupt_facility_initialize(void)
40{
41  int i;
42  ARMV7M_Exception_handler *vector_table =
43    (ARMV7M_Exception_handler *) bsp_vector_table_begin;
44
45  memcpy(
46    vector_table,
47    bsp_start_vector_table_begin,
48    (size_t) bsp_vector_table_size
49  );
50
51  for (i = BSP_INTERRUPT_VECTOR_MIN; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
52    vector_table [ARMV7M_VECTOR_IRQ(i)] = _ARMV7M_NVIC_Interrupt_dispatch;
53    _ARMV7M_NVIC_Clear_enable(i);
54    _ARMV7M_NVIC_Clear_pending(i);
55    _ARMV7M_NVIC_Set_priority(i, BSP_ARMV7M_IRQ_PRIORITY_DEFAULT);
56  }
57
58  _ARMV7M_SCB->vtor = vector_table;
59
60  return RTEMS_SUCCESSFUL;
61}
62
63#endif /* ARM_MULTILIB_ARCH_V7M */
Note: See TracBrowser for help on using the repository browser.