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

5
Last change on this file since 84008f9e was 84008f9e, checked in by Alexander Krutwig <alexander.krutwig@…>, on 07/25/16 at 12:51:06

bsps/arm: Clear pending exceptions for ARMv7-M

  • Property mode set to 100644
File size: 1.6 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  if (bsp_vector_table_begin != bsp_start_vector_table_begin) {
46    memcpy(
47      vector_table,
48      bsp_start_vector_table_begin,
49      (size_t) bsp_vector_table_size
50    );
51  }
52
53  _ARMV7M_SCB->icsr = ARMV7M_SCB_ICSR_PENDSVCLR | ARMV7M_SCB_ICSR_PENDSTCLR;
54
55  for (i = BSP_INTERRUPT_VECTOR_MIN; i <= BSP_INTERRUPT_VECTOR_MAX; ++i) {
56    vector_table [ARMV7M_VECTOR_IRQ(i)] = _ARMV7M_NVIC_Interrupt_dispatch;
57    _ARMV7M_NVIC_Clear_enable(i);
58    _ARMV7M_NVIC_Clear_pending(i);
59    _ARMV7M_NVIC_Set_priority(i, BSP_ARMV7M_IRQ_PRIORITY_DEFAULT);
60  }
61
62  _ARMV7M_SCB->vtor = vector_table;
63
64  return RTEMS_SUCCESSFUL;
65}
66
67#endif /* ARM_MULTILIB_ARCH_V7M */
Note: See TracBrowser for help on using the repository browser.