4.115
Last change
on this file since df40cc9 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.3 KB
|
Line | |
---|
1 | /* |
---|
2 | * LPC22XX/LPC21xx Intererrupt handler |
---|
3 | * |
---|
4 | * Modified by Ray <rayx.cn@gmail.com> 2006 from Jay Monkman's code |
---|
5 | * |
---|
6 | * The license and distribution terms for this file may be |
---|
7 | * found in the file LICENSE in this distribution or at |
---|
8 | * http://www.rtems.org/license/LICENSE. |
---|
9 | */ |
---|
10 | #define __asm__ |
---|
11 | |
---|
12 | /* |
---|
13 | * BSP specific interrupt handler for INT or FIQ. In here |
---|
14 | * you do determine which interrupt happened and call its |
---|
15 | * handler. |
---|
16 | * Called from ISR_Handler, It is better to write in C function |
---|
17 | */ |
---|
18 | .globl bsp_interrupt_dispatch |
---|
19 | bsp_interrupt_dispatch : |
---|
20 | #ifdef __thumb__ |
---|
21 | .code 16 |
---|
22 | #endif |
---|
23 | |
---|
24 | /* |
---|
25 | * Look at interrupt status register to determine source. |
---|
26 | * From source, determine offset into expanded vector table |
---|
27 | * and load handler address into r0. |
---|
28 | */ |
---|
29 | |
---|
30 | ldr r0, =0xFFFFF030 /* Read the vector number */ |
---|
31 | ldr r0, [r0] |
---|
32 | #ifdef __thumb__ |
---|
33 | push {lr} |
---|
34 | ldr r2, =IRQ_return /* prepare the return from handler */ |
---|
35 | mov lr, r2 |
---|
36 | #else |
---|
37 | stmdb sp!,{lr} |
---|
38 | ldr lr, =IRQ_return /* prepare the return from handler */ |
---|
39 | #endif |
---|
40 | |
---|
41 | |
---|
42 | /*C code will be called*/ |
---|
43 | mov pc, r0 /* EXECUTE INT HANDLER */ |
---|
44 | |
---|
45 | /* |
---|
46 | * C code may come back from Thumb if --thumb-interwork flag is False |
---|
47 | * Add some veneer to make sure that code back to ARM |
---|
48 | */ |
---|
49 | IRQ_return: |
---|
50 | #ifdef __thumb__ |
---|
51 | pop {r1} |
---|
52 | bx r1 |
---|
53 | #else |
---|
54 | ldmia sp!,{r1} |
---|
55 | mov pc, r1 |
---|
56 | #endif |
---|
57 | |
---|
Note: See
TracBrowser
for help on using the repository browser.