source: rtems/cpukit/score/cpu/arm/rtems/score/armv7m.h @ 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: 13.8 KB
Line 
1/**
2 * @file
3 *
4 * @brief ARMV7M Architecture Support
5 */
6
7/*
8 * Copyright (c) 2011 Sebastian Huber.  All rights reserved.
9 *
10 *  embedded brains GmbH
11 *  Obere Lagerstr. 30
12 *  82178 Puchheim
13 *  Germany
14 *  <rtems@embedded-brains.de>
15 *
16 * The license and distribution terms for this file may be
17 * found in the file LICENSE in this distribution or at
18 * http://www.rtems.org/license/LICENSE.
19 */
20
21#ifndef RTEMS_SCORE_ARMV7M_H
22#define RTEMS_SCORE_ARMV7M_H
23
24#include <rtems/score/cpu.h>
25
26#ifdef __cplusplus
27extern "C" {
28#endif /* __cplusplus */
29
30#ifdef ARM_MULTILIB_ARCH_V7M
31
32typedef struct {
33  uint32_t reserved_0;
34  uint32_t ictr;
35  uint32_t actlr;
36  uint32_t reserved_1;
37} ARMV7M_ICTAC;
38
39typedef void (*ARMV7M_Exception_handler)(void);
40
41typedef struct {
42  uint32_t register_r0;
43  uint32_t register_r1;
44  uint32_t register_r2;
45  uint32_t register_r3;
46  uint32_t register_r12;
47  void *register_lr;
48  void *register_pc;
49  uint32_t register_xpsr;
50} ARMV7M_Exception_frame;
51
52typedef struct {
53  uint32_t cpuid;
54
55#define ARMV7M_SCB_ICSR_NMIPENDSET (1U << 31)
56#define ARMV7M_SCB_ICSR_PENDSVSET (1U << 28)
57#define ARMV7M_SCB_ICSR_PENDSVCLR (1U << 27)
58#define ARMV7M_SCB_ICSR_PENDSTSET (1U << 26)
59#define ARMV7M_SCB_ICSR_PENDSTCLR (1U << 25)
60#define ARMV7M_SCB_ICSR_ISRPREEMPT (1U << 23)
61#define ARMV7M_SCB_ICSR_ISRPENDING (1U << 22)
62#define ARMV7M_SCB_ICSR_VECTPENDING_GET(reg) (((reg) >> 12) & 0x1ffU)
63#define ARMV7M_SCB_ICSR_RETTOBASE (1U << 11)
64#define ARMV7M_SCB_ICSR_VECTACTIVE_GET(reg) ((reg) & 0x1ffU)
65  uint32_t icsr;
66
67  ARMV7M_Exception_handler *vtor;
68
69#define ARMV7M_SCB_AIRCR_VECTKEY (0x05fa << 16)
70#define ARMV7M_SCB_AIRCR_ENDIANESS (1U << 15)
71#define ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT 8
72#define ARMV7M_SCB_AIRCR_PRIGROUP_MASK \
73  ((0x7U) << ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT)
74#define ARMV7M_SCB_AIRCR_PRIGROUP(val) \
75  (((val) << ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT) & ARMV7M_SCB_AIRCR_PRIGROUP_MASK)
76#define ARMV7M_SCB_AIRCR_PRIGROUP_GET(reg) \
77  (((val) & ARMV7M_SCB_AIRCR_PRIGROUP_MASK) >> ARMV7M_SCB_AIRCR_PRIGROUP_SHIFT)
78#define ARMV7M_SCB_AIRCR_PRIGROUP_SET(reg, val) \
79  (((reg) & ~ARMV7M_SCB_AIRCR_PRIGROUP_MASK) | ARMV7M_SCB_AIRCR_PRIGROUP(val))
80#define ARMV7M_SCB_AIRCR_SYSRESETREQ (1U << 2)
81#define ARMV7M_SCB_AIRCR_VECTCLRACTIVE (1U << 1)
82#define ARMV7M_SCB_AIRCR_VECTRESET (1U << 0)
83  uint32_t aircr;
84
85  uint32_t scr;
86  uint32_t ccr;
87  uint8_t shpr [12];
88
89#define ARMV7M_SCB_SHCSR_USGFAULTENA (1U << 18)
90#define ARMV7M_SCB_SHCSR_BUSFAULTENA (1U << 17)
91#define ARMV7M_SCB_SHCSR_MEMFAULTENA (1U << 16)
92  uint32_t shcsr;
93
94  uint32_t cfsr;
95  uint32_t hfsr;
96  uint32_t dfsr;
97  uint32_t mmfar;
98  uint32_t bfar;
99  uint32_t afsr;
100} ARMV7M_SCB;
101
102typedef struct {
103#define ARMV7M_SYSTICK_CSR_COUNTFLAG (1U << 16)
104#define ARMV7M_SYSTICK_CSR_CLKSOURCE (1U << 2)
105#define ARMV7M_SYSTICK_CSR_TICKINT (1U << 1)
106#define ARMV7M_SYSTICK_CSR_ENABLE (1U << 0)
107  uint32_t csr;
108
109  uint32_t rvr;
110  uint32_t cvr;
111
112#define ARMV7M_SYSTICK_CALIB_NOREF (1U << 31)
113#define ARMV7M_SYSTICK_CALIB_SKEW (1U << 30)
114#define ARMV7M_SYSTICK_CALIB_TENMS_GET(reg) ((reg) & 0xffffffU)
115  uint32_t calib;
116} ARMV7M_Systick;
117
118typedef struct {
119  uint32_t iser [8];
120  uint32_t reserved_0 [24];
121  uint32_t icer [8];
122  uint32_t reserved_1 [24];
123  uint32_t ispr [8];
124  uint32_t reserved_2 [24];
125  uint32_t icpr [8];
126  uint32_t reserved_3 [24];
127  uint32_t iabr [8];
128  uint32_t reserved_4 [56];
129  uint8_t  ipr [240];
130  uint32_t reserved_5 [644];
131  uint32_t stir;
132} ARMV7M_NVIC;
133
134typedef struct {
135#define ARMV7M_MPU_TYPE_IREGION_GET(reg) (((reg) >> 16) & 0xffU)
136#define ARMV7M_MPU_TYPE_DREGION_GET(reg) (((reg) >> 8) & 0xffU)
137#define ARMV7M_MPU_TYPE_SEPARATE (1U << 0)
138  uint32_t type;
139
140#define ARMV7M_MPU_CTRL_PRIVDEFENA (1U << 2)
141#define ARMV7M_MPU_CTRL_HFNMIENA (1U << 1)
142#define ARMV7M_MPU_CTRL_ENABLE (1U << 0)
143  uint32_t ctrl;
144
145  uint32_t rnr;
146
147#define ARMV7M_MPU_RBAR_ADDR_SHIFT 5
148#define ARMV7M_MPU_RBAR_ADDR_MASK \
149  ((0x7ffffffU) << ARMV7M_MPU_RBAR_ADDR_SHIFT)
150#define ARMV7M_MPU_RBAR_ADDR(val) \
151  (((val) << ARMV7M_MPU_RBAR_ADDR_SHIFT) & ARMV7M_MPU_RBAR_ADDR_MASK)
152#define ARMV7M_MPU_RBAR_ADDR_GET(reg) \
153  (((val) & ARMV7M_MPU_RBAR_ADDR_MASK) >> ARMV7M_MPU_RBAR_ADDR_SHIFT)
154#define ARMV7M_MPU_RBAR_ADDR_SET(reg, val) \
155  (((reg) & ~ARMV7M_MPU_RBAR_ADDR_MASK) | ARMV7M_MPU_RBAR_ADDR(val))
156#define ARMV7M_MPU_RBAR_VALID (1U << 4)
157#define ARMV7M_MPU_RBAR_REGION_SHIFT 0
158#define ARMV7M_MPU_RBAR_REGION_MASK \
159  ((0xfU) << ARMV7M_MPU_RBAR_REGION_SHIFT)
160#define ARMV7M_MPU_RBAR_REGION(val) \
161  (((val) << ARMV7M_MPU_RBAR_REGION_SHIFT) & ARMV7M_MPU_RBAR_REGION_MASK)
162#define ARMV7M_MPU_RBAR_REGION_GET(reg) \
163  (((val) & ARMV7M_MPU_RBAR_REGION_MASK) >> ARMV7M_MPU_RBAR_REGION_SHIFT)
164#define ARMV7M_MPU_RBAR_REGION_SET(reg, val) \
165  (((reg) & ~ARMV7M_MPU_RBAR_REGION_MASK) | ARMV7M_MPU_RBAR_REGION(val))
166  uint32_t rbar;
167
168#define ARMV7M_MPU_RASR_XN (1U << 28)
169#define ARMV7M_MPU_RASR_AP_SHIFT 24
170#define ARMV7M_MPU_RASR_AP_MASK \
171  ((0x7U) << ARMV7M_MPU_RASR_AP_SHIFT)
172#define ARMV7M_MPU_RASR_AP(val) \
173  (((val) << ARMV7M_MPU_RASR_AP_SHIFT) & ARMV7M_MPU_RASR_AP_MASK)
174#define ARMV7M_MPU_RASR_AP_GET(reg) \
175  (((val) & ARMV7M_MPU_RASR_AP_MASK) >> ARMV7M_MPU_RASR_AP_SHIFT)
176#define ARMV7M_MPU_RASR_AP_SET(reg, val) \
177  (((reg) & ~ARMV7M_MPU_RASR_AP_MASK) | ARMV7M_MPU_RASR_AP(val))
178#define ARMV7M_MPU_RASR_TEX_SHIFT 19
179#define ARMV7M_MPU_RASR_TEX_MASK \
180  ((0x7U) << ARMV7M_MPU_RASR_TEX_SHIFT)
181#define ARMV7M_MPU_RASR_TEX(val) \
182  (((val) << ARMV7M_MPU_RASR_TEX_SHIFT) & ARMV7M_MPU_RASR_TEX_MASK)
183#define ARMV7M_MPU_RASR_TEX_GET(reg) \
184  (((val) & ARMV7M_MPU_RASR_TEX_MASK) >> ARMV7M_MPU_RASR_TEX_SHIFT)
185#define ARMV7M_MPU_RASR_TEX_SET(reg, val) \
186  (((reg) & ~ARMV7M_MPU_RASR_TEX_MASK) | ARMV7M_MPU_RASR_TEX(val))
187#define ARMV7M_MPU_RASR_S (1U << 18)
188#define ARMV7M_MPU_RASR_C (1U << 17)
189#define ARMV7M_MPU_RASR_B (1U << 16)
190#define ARMV7M_MPU_RASR_SRD_SHIFT 8
191#define ARMV7M_MPU_RASR_SRD_MASK \
192  ((0xffU) << ARMV7M_MPU_RASR_SRD_SHIFT)
193#define ARMV7M_MPU_RASR_SRD(val) \
194  (((val) << ARMV7M_MPU_RASR_SRD_SHIFT) & ARMV7M_MPU_RASR_SRD_MASK)
195#define ARMV7M_MPU_RASR_SRD_GET(reg) \
196  (((val) & ARMV7M_MPU_RASR_SRD_MASK) >> ARMV7M_MPU_RASR_SRD_SHIFT)
197#define ARMV7M_MPU_RASR_SRD_SET(reg, val) \
198  (((reg) & ~ARMV7M_MPU_RASR_SRD_MASK) | ARMV7M_MPU_RASR_SRD(val))
199#define ARMV7M_MPU_RASR_SIZE_SHIFT 1
200#define ARMV7M_MPU_RASR_SIZE_MASK \
201  ((0x1fU) << ARMV7M_MPU_RASR_SIZE_SHIFT)
202#define ARMV7M_MPU_RASR_SIZE(val) \
203  (((val) << ARMV7M_MPU_RASR_SIZE_SHIFT) & ARMV7M_MPU_RASR_SIZE_MASK)
204#define ARMV7M_MPU_RASR_SIZE_GET(reg) \
205  (((val) & ARMV7M_MPU_RASR_SIZE_MASK) >> ARMV7M_MPU_RASR_SIZE_SHIFT)
206#define ARMV7M_MPU_RASR_SIZE_SET(reg, val) \
207  (((reg) & ~ARMV7M_MPU_RASR_SIZE_MASK) | ARMV7M_MPU_RASR_SIZE(val))
208#define ARMV7M_MPU_RASR_ENABLE (1U << 0)
209  uint32_t rasr;
210
211  uint32_t rbar_a1;
212  uint32_t rasr_a1;
213  uint32_t rbar_a2;
214  uint32_t rasr_a2;
215  uint32_t rbar_a3;
216  uint32_t rasr_a3;
217} ARMV7M_MPU;
218
219typedef enum {
220  ARMV7M_MPU_AP_PRIV_NO_USER_NO,
221  ARMV7M_MPU_AP_PRIV_RW_USER_NO,
222  ARMV7M_MPU_AP_PRIV_RW_USER_RO,
223  ARMV7M_MPU_AP_PRIV_RW_USER_RW,
224  ARMV7M_MPU_AP_PRIV_RO_USER_NO = 0x5,
225  ARMV7M_MPU_AP_PRIV_RO_USER_RO,
226} ARMV7M_MPU_Access_permissions;
227
228typedef enum {
229  ARMV7M_MPU_ATTR_R = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_RO_USER_NO)
230    | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_XN,
231  ARMV7M_MPU_ATTR_RW = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_RW_USER_NO)
232    | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_XN | ARMV7M_MPU_RASR_B,
233  ARMV7M_MPU_ATTR_RWX = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_RW_USER_NO)
234    | ARMV7M_MPU_RASR_C | ARMV7M_MPU_RASR_B,
235  ARMV7M_MPU_ATTR_X = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_NO_USER_NO)
236    | ARMV7M_MPU_RASR_C,
237  ARMV7M_MPU_ATTR_RX = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_RO_USER_NO)
238    | ARMV7M_MPU_RASR_C,
239  ARMV7M_MPU_ATTR_IO = ARMV7M_MPU_RASR_AP(ARMV7M_MPU_AP_PRIV_RW_USER_NO)
240    | ARMV7M_MPU_RASR_XN,
241} ARMV7M_MPU_Attributes;
242
243typedef enum {
244  ARMV7M_MPU_SIZE_32_B = 0x4,
245  ARMV7M_MPU_SIZE_64_B,
246  ARMV7M_MPU_SIZE_128_B,
247  ARMV7M_MPU_SIZE_256_B,
248  ARMV7M_MPU_SIZE_512_B,
249  ARMV7M_MPU_SIZE_1_KB,
250  ARMV7M_MPU_SIZE_2_KB,
251  ARMV7M_MPU_SIZE_4_KB,
252  ARMV7M_MPU_SIZE_8_KB,
253  ARMV7M_MPU_SIZE_16_KB,
254  ARMV7M_MPU_SIZE_32_KB,
255  ARMV7M_MPU_SIZE_64_KB,
256  ARMV7M_MPU_SIZE_128_KB,
257  ARMV7M_MPU_SIZE_256_KB,
258  ARMV7M_MPU_SIZE_512_KB,
259  ARMV7M_MPU_SIZE_1_MB,
260  ARMV7M_MPU_SIZE_2_MB,
261  ARMV7M_MPU_SIZE_4_MB,
262  ARMV7M_MPU_SIZE_8_MB,
263  ARMV7M_MPU_SIZE_16_MB,
264  ARMV7M_MPU_SIZE_32_MB,
265  ARMV7M_MPU_SIZE_64_MB,
266  ARMV7M_MPU_SIZE_128_MB,
267  ARMV7M_MPU_SIZE_256_MB,
268  ARMV7M_MPU_SIZE_512_MB,
269  ARMV7M_MPU_SIZE_1_GB,
270  ARMV7M_MPU_SIZE_2_GB,
271  ARMV7M_MPU_SIZE_4_GB
272} ARMV7M_MPU_Size;
273
274typedef struct {
275  uint32_t rbar;
276  uint32_t rasr;
277} ARMV7M_MPU_Region;
278
279#define ARMV7M_MPU_REGION_INITIALIZER(idx, addr, size, attr) \
280  { \
281    ((addr) & ARMV7M_MPU_RBAR_ADDR_MASK) \
282      | ARMV7M_MPU_RBAR_VALID \
283      | ARMV7M_MPU_RBAR_REGION(idx), \
284    ARMV7M_MPU_RASR_SIZE(size) | (attr) | ARMV7M_MPU_RASR_ENABLE \
285  }
286
287#define ARMV7M_MPU_REGION_DISABLED_INITIALIZER(idx) \
288  { \
289    ARMV7M_MPU_RBAR_VALID | ARMV7M_MPU_RBAR_REGION(idx), \
290    0 \
291  }
292
293#define ARMV7M_SCS_BASE 0xe000e000
294#define ARMV7M_ICTAC_BASE (ARMV7M_SCS_BASE + 0x0)
295#define ARMV7M_SYSTICK_BASE (ARMV7M_SCS_BASE + 0x10)
296#define ARMV7M_NVIC_BASE (ARMV7M_SCS_BASE + 0x100)
297#define ARMV7M_SCB_BASE (ARMV7M_SCS_BASE + 0xd00)
298#define ARMV7M_MPU_BASE (ARMV7M_SCS_BASE + 0xd90)
299
300#define _ARMV7M_ICTAC \
301  ((volatile ARMV7M_ICTAC *) ARMV7M_ICTAC_BASE)
302#define _ARMV7M_SCB \
303  ((volatile ARMV7M_SCB *) ARMV7M_SCB_BASE)
304#define _ARMV7M_Systick \
305  ((volatile ARMV7M_Systick *) ARMV7M_SYSTICK_BASE)
306#define _ARMV7M_NVIC \
307  ((volatile ARMV7M_NVIC *) ARMV7M_NVIC_BASE)
308#define _ARMV7M_MPU \
309  ((volatile ARMV7M_MPU *) ARMV7M_MPU_BASE)
310
311#define ARMV7M_VECTOR_MSP 0
312#define ARMV7M_VECTOR_RESET 1
313#define ARMV7M_VECTOR_NMI 2
314#define ARMV7M_VECTOR_HARD_FAULT 3
315#define ARMV7M_VECTOR_MEM_MANAGE 4
316#define ARMV7M_VECTOR_BUS_FAULT 5
317#define ARMV7M_VECTOR_USAGE_FAULT 6
318#define ARMV7M_VECTOR_SVC 11
319#define ARMV7M_VECTOR_DEBUG_MONITOR 12
320#define ARMV7M_VECTOR_PENDSV 14
321#define ARMV7M_VECTOR_SYSTICK 15
322#define ARMV7M_VECTOR_IRQ(n) ((n) + 16)
323#define ARMV7M_IRQ_OF_VECTOR(n) ((n) - 16)
324
325#define ARMV7M_EXCEPTION_PRIORITY_LOWEST 255
326
327static inline bool _ARMV7M_Is_vector_an_irq( int vector )
328{
329  return vector >= 16;
330}
331
332static inline uint32_t _ARMV7M_Get_basepri(void)
333{
334  uint32_t val;
335  __asm__ volatile ("mrs %[val], basepri\n" : [val] "=&r" (val));
336  return val;
337}
338
339static inline void _ARMV7M_Set_basepri(uint32_t val)
340{
341  __asm__ volatile ("msr basepri, %[val]\n" : : [val] "r" (val));
342}
343
344static inline uint32_t _ARMV7M_Get_primask(void)
345{
346  uint32_t val;
347  __asm__ volatile ("mrs %[val], primask\n" : [val] "=&r" (val));
348  return val;
349}
350
351static inline void _ARMV7M_Set_primask(uint32_t val)
352{
353  __asm__ volatile ("msr primask, %[val]\n" : : [val] "r" (val));
354}
355
356static inline uint32_t _ARMV7M_Get_faultmask(void)
357{
358  uint32_t val;
359  __asm__ volatile ("mrs %[val], faultmask\n" : [val] "=&r" (val));
360  return val;
361}
362
363static inline void _ARMV7M_Set_faultmask(uint32_t val)
364{
365  __asm__ volatile ("msr faultmask, %[val]\n" : : [val] "r" (val));
366}
367
368static inline uint32_t _ARMV7M_Get_control(void)
369{
370  uint32_t val;
371  __asm__ volatile ("mrs %[val], control\n" : [val] "=&r" (val));
372  return val;
373}
374
375static inline void _ARMV7M_Set_control(uint32_t val)
376{
377  __asm__ volatile ("msr control, %[val]\n" : : [val] "r" (val));
378}
379
380static inline uint32_t _ARMV7M_Get_MSP(void)
381{
382  uint32_t val;
383  __asm__ volatile ("mrs %[val], msp\n" : [val] "=&r" (val));
384  return val;
385}
386
387static inline void _ARMV7M_Set_MSP(uint32_t val)
388{
389  __asm__ volatile ("msr msp, %[val]\n" : : [val] "r" (val));
390}
391
392static inline uint32_t _ARMV7M_Get_PSP(void)
393{
394  uint32_t val;
395  __asm__ volatile ("mrs %[val], psp\n" : [val] "=&r" (val));
396  return val;
397}
398
399static inline void _ARMV7M_Set_PSP(uint32_t val)
400{
401  __asm__ volatile ("msr psp, %[val]\n" : : [val] "r" (val));
402}
403
404static inline uint32_t _ARMV7M_Get_XPSR(void)
405{
406  uint32_t val;
407  __asm__ volatile ("mrs %[val], xpsr\n" : [val] "=&r" (val));
408  return val;
409}
410
411static inline bool _ARMV7M_NVIC_Is_enabled( int irq )
412{
413  int index = irq >> 5;
414  uint32_t bit = 1U << (irq & 0x1f);
415
416  return (_ARMV7M_NVIC->iser [index] & bit) != 0;
417}
418
419static inline void _ARMV7M_NVIC_Set_enable( int irq )
420{
421  int index = irq >> 5;
422  uint32_t bit = 1U << (irq & 0x1f);
423
424  _ARMV7M_NVIC->iser [index] = bit;
425}
426
427static inline void _ARMV7M_NVIC_Clear_enable( int irq )
428{
429  int index = irq >> 5;
430  uint32_t bit = 1U << (irq & 0x1f);
431
432  _ARMV7M_NVIC->icer [index] = bit;
433}
434
435static inline bool _ARMV7M_NVIC_Is_pending( int irq )
436{
437  int index = irq >> 5;
438  uint32_t bit = 1U << (irq & 0x1f);
439
440  return (_ARMV7M_NVIC->ispr [index] & bit) != 0;
441}
442
443static inline void _ARMV7M_NVIC_Set_pending( int irq )
444{
445  int index = irq >> 5;
446  uint32_t bit = 1U << (irq & 0x1f);
447
448  _ARMV7M_NVIC->ispr [index] = bit;
449}
450
451static inline void _ARMV7M_NVIC_Clear_pending( int irq )
452{
453  int index = irq >> 5;
454  uint32_t bit = 1U << (irq & 0x1f);
455
456  _ARMV7M_NVIC->icpr [index] = bit;
457}
458
459static inline bool _ARMV7M_NVIC_Is_active( int irq )
460{
461  int index = irq >> 5;
462  uint32_t bit = 1U << (irq & 0x1f);
463
464  return (_ARMV7M_NVIC->iabr [index] & bit) != 0;
465}
466
467static inline void _ARMV7M_NVIC_Set_priority( int irq, int priority )
468{
469  _ARMV7M_NVIC->ipr [irq] = (uint8_t) priority;
470}
471
472static inline int _ARMV7M_NVIC_Get_priority( int irq )
473{
474  return _ARMV7M_NVIC->ipr [irq];
475}
476
477int _ARMV7M_Get_exception_priority( int vector );
478
479void _ARMV7M_Set_exception_priority( int vector, int priority );
480
481ARMV7M_Exception_handler _ARMV7M_Get_exception_handler( int index );
482
483void _ARMV7M_Set_exception_handler(
484  int index,
485  ARMV7M_Exception_handler handler
486);
487
488/**
489 * @brief ARMV7M set exception priority and handler.
490 */
491void _ARMV7M_Set_exception_priority_and_handler(
492  int index,
493  int priority,
494  ARMV7M_Exception_handler handler
495);
496
497void _ARMV7M_Exception_default( void );
498
499void _ARMV7M_Interrupt_service_enter( void );
500
501void _ARMV7M_Interrupt_service_leave( void );
502
503void _ARMV7M_Pendable_service_call( void );
504
505void _ARMV7M_Supervisor_call( void );
506
507#endif /* ARM_MULTILIB_ARCH_V7M */
508
509#ifdef __cplusplus
510}
511#endif /* __cplusplus */
512
513#endif /* RTEMS_SCORE_ARMV7M_H */
Note: See TracBrowser for help on using the repository browser.