1 | /* vectors.s 1.1 - 95/12/04 |
---|
2 | * |
---|
3 | * This file contains the assembly code for the PowerPC |
---|
4 | * interrupt veneers for RTEMS. |
---|
5 | * |
---|
6 | */ |
---|
7 | |
---|
8 | /* |
---|
9 | * The issue with this file is getting it loaded at the right place. |
---|
10 | * The first vector MUST be at address 0x????0100. |
---|
11 | * How this is achieved is dependant on the tool chain. |
---|
12 | * |
---|
13 | * However the basic mechanism for ELF assemblers is to create a |
---|
14 | * section called ".vectors", which will be loaded to an address |
---|
15 | * between 0x????0000 and 0x????0100 (inclusive) via a link script. |
---|
16 | * |
---|
17 | * The basic mechanism for XCOFF assemblers is to place it in the |
---|
18 | * normal text section, and arrange for this file to be located |
---|
19 | * at an appropriate position on the linker command line. |
---|
20 | * |
---|
21 | * The variable 'PPC_VECTOR_FILE_BASE' must be defined to be the |
---|
22 | * offset from 0x????0000 to the first location in the file. This |
---|
23 | * will usually be 0x0000 or 0x0100. |
---|
24 | * |
---|
25 | * $Id$ |
---|
26 | */ |
---|
27 | |
---|
28 | #include <bsp.h> |
---|
29 | #include <rtems/asm.h> |
---|
30 | |
---|
31 | #ifndef PPC_VECTOR_FILE_BASE |
---|
32 | #error "PPC_VECTOR_FILE_BASE is not defined." |
---|
33 | #endif |
---|
34 | |
---|
35 | #if (SCORE603E_USE_NONE) |
---|
36 | |
---|
37 | /* Where this file will be loaded */ |
---|
38 | .set file_base, PPC_VECTOR_FILE_BASE |
---|
39 | |
---|
40 | /* Vector offsets */ |
---|
41 | .set reset_vector,0x0100 |
---|
42 | .set mach_vector,0x0200 |
---|
43 | .set prot_vector,0x0300 |
---|
44 | .set isi_vector,0x0400 |
---|
45 | .set ext_vector,0x0500 |
---|
46 | .set align_vector,0x0600 |
---|
47 | .set prog_vector,0x0700 |
---|
48 | .set float_vector,0x0800 |
---|
49 | .set dec_vector,0x0900 |
---|
50 | .set sys_vector,0x00C00 |
---|
51 | .set trace_vector, 0x0d00 |
---|
52 | .set itm_vector,0x01000 |
---|
53 | .set dltm_vector,0x1100 |
---|
54 | .set dstm_vector,0x1200 |
---|
55 | .set addr_vector,0x1300 |
---|
56 | .set sysmgmt_vector,0x1400 |
---|
57 | |
---|
58 | /* Go to the right section */ |
---|
59 | #if PPC_ASM == PPC_ASM_ELF |
---|
60 | .section .vectors,"awx",@progbits |
---|
61 | #endif |
---|
62 | |
---|
63 | PUBLIC_VAR (__vectors) |
---|
64 | SYM (__vectors): |
---|
65 | |
---|
66 | /* Decrementer interrupt */ |
---|
67 | .org reset_vector - file_base |
---|
68 | ba 0x00100 |
---|
69 | ba 0xfff00100 |
---|
70 | ba 0xfff00100 |
---|
71 | ba 0xfff00100 |
---|
72 | |
---|
73 | .org mach_vector - file_base |
---|
74 | ba 0x00200 |
---|
75 | ba 0xfff00200 |
---|
76 | ba 0xfff00200 |
---|
77 | ba 0xfff00200 |
---|
78 | |
---|
79 | .org prot_vector - file_base |
---|
80 | ba 0x00300 |
---|
81 | ba 0xfff00300 |
---|
82 | ba 0xfff00300 |
---|
83 | ba 0xfff00300 |
---|
84 | |
---|
85 | .org isi_vector - file_base |
---|
86 | ba 0x00400 |
---|
87 | ba 0xfff00400 |
---|
88 | ba 0xfff00400 |
---|
89 | ba 0xfff00400 |
---|
90 | |
---|
91 | .org ext_vector - file_base |
---|
92 | ba 0x0500 |
---|
93 | ba 0xfff00500 |
---|
94 | ba 0xfff00500 |
---|
95 | ba 0xfff00500 |
---|
96 | |
---|
97 | .org align_vector - file_base |
---|
98 | ba 0x00600 |
---|
99 | ba 0xfff00600 |
---|
100 | ba 0xfff00600 |
---|
101 | ba 0xfff00600 |
---|
102 | |
---|
103 | .org prog_vector - file_base |
---|
104 | ba 0x00700 |
---|
105 | ba 0xfff00700 |
---|
106 | ba 0xfff00700 |
---|
107 | ba 0xfff00700 |
---|
108 | |
---|
109 | .org float_vector - file_base |
---|
110 | ba 0x00800 |
---|
111 | ba 0xfff00800 |
---|
112 | ba 0xfff00800 |
---|
113 | ba 0xfff00800 |
---|
114 | |
---|
115 | .org dec_vector - file_base |
---|
116 | rfi |
---|
117 | ba 0xfff00900 |
---|
118 | ba 0xfff00900 |
---|
119 | ba 0xfff00900 |
---|
120 | |
---|
121 | .org sys_vector - file_base |
---|
122 | ba 0x0c00 |
---|
123 | ba 0xfff00C00 |
---|
124 | ba 0xfff00C00 |
---|
125 | ba 0xfff00C00 |
---|
126 | |
---|
127 | .org trace_vector - file_base |
---|
128 | ba 0x0d00 |
---|
129 | ba 0xfff00d00 |
---|
130 | ba 0xfff00d00 |
---|
131 | ba 0xfff00d00 |
---|
132 | |
---|
133 | .org itm_vector - file_base |
---|
134 | ba 0x01000 |
---|
135 | ba 0xfff01000 |
---|
136 | ba 0xfff01000 |
---|
137 | ba 0xfff01000 |
---|
138 | |
---|
139 | .org dltm_vector - file_base |
---|
140 | ba 0x01100 |
---|
141 | ba 0xfff01100 |
---|
142 | ba 0xfff01100 |
---|
143 | ba 0xfff01100 |
---|
144 | |
---|
145 | .org dstm_vector - file_base |
---|
146 | ba 0x1200 |
---|
147 | ba 0xfff01200 |
---|
148 | ba 0xfff01200 |
---|
149 | ba 0xfff01200 |
---|
150 | |
---|
151 | .org addr_vector - file_base |
---|
152 | ba 0x1300 |
---|
153 | ba 0xfff01300 |
---|
154 | ba 0xfff01300 |
---|
155 | ba 0xfff01300 |
---|
156 | |
---|
157 | .org sysmgmt_vector - file_base |
---|
158 | ba 0x1400 |
---|
159 | ba 0xfff01400 |
---|
160 | ba 0xfff01400 |
---|
161 | ba 0xfff01400 |
---|
162 | #endif |
---|