]> git.sur5r.net Git - freertos/blob - Demo/ColdFire_MCF51CN128_CodeWarrior/Sources/exceptions.c
Start to re-arrange files to include FreeRTOS+ in main download.
[freertos] / Demo / ColdFire_MCF51CN128_CodeWarrior / Sources / exceptions.c
1 /*\r
2  * File:    exceptions.c\r
3  * Purpose: Generic exception handling for ColdFire processors\r
4  *\r
5  */\r
6 \r
7 #include "derivative.h"\r
8 #include "exceptions.h"\r
9 #include "startcf.h"\r
10 \r
11 #define REGISTER_ABI __REGABI__\r
12 \r
13 extern asm void interrupt 109 vPortYieldISR( void );\r
14 extern void interrupt 86 vFECISRHandler( void );\r
15 \r
16 /***********************************************************************/\r
17 /*\r
18  *  Set NO_PRINTF to 0 in order the exceptions.c interrupt handler\r
19  *  to output messages to the standard io. \r
20  * \r
21  */\r
22 #define NO_PRINTF    1\r
23 \r
24 #if NO_PRINTF\r
25 #define VECTORDISPLAY(MESSAGE)                    asm { nop; };\r
26 #define VECTORDISPLAY2(MESSAGE,MESSAGE2)          asm { nop; };\r
27 #define VECTORDISPLAY3(MESSAGE,MESSAGE2,MESSAGE3) asm { nop; };\r
28 #else\r
29 #include <stdio.h>\r
30 #define VECTORDISPLAY(MESSAGE1)                    printf(MESSAGE1);\r
31 #define VECTORDISPLAY2(MESSAGE1,MESSAGE2)          printf(MESSAGE1,MESSAGE2);\r
32 #define VECTORDISPLAY3(MESSAGE1,MESSAGE2,MESSAGE3) printf(MESSAGE1,MESSAGE2,MESSAGE3);\r
33 #endif\r
34 \r
35 #ifdef __cplusplus\r
36 extern "C" {\r
37 #endif\r
38 \r
39 extern unsigned long far _SP_INIT[];\r
40 \r
41 /***********************************************************************/\r
42 /*\r
43  * Handling of the TRK ColdFire libs (printf support in Debugger Terminal) \r
44  * \r
45  * To enable this support:  \r
46  * - Set CONSOLE_IO_SUPPORT  1 in this file; this will enable \r
47  *   TrapHandler_printf for the trap #14 exception.\r
48  *\r
49  * - Make sure the file console_io_cf.c is in your project. \r
50  *\r
51  * - In the debugger make sure that in the Connection "Setup" dialog, \r
52  *   "Debug Options" property page, the check box \r
53  *   "Enable Terminal printf support" is set.\r
54  *   \r
55  *\r
56  * \r
57  */\r
58 #define CONSOLE_IO_SUPPORT  0 \r
59 \r
60 #if CONSOLE_IO_SUPPORT\r
61 asm void TrapHandler_printf(void) {\r
62    HALT\r
63    RTE\r
64 }\r
65 #endif                                                   \r
66 \r
67 /***********************************************************************/\r
68 /*\r
69  * This is the handler for all exceptions which are not common to all \r
70  * ColdFire Chips.  \r
71  *\r
72  * Called by mcf_exception_handler\r
73  * \r
74  */\r
75 void derivative_interrupt(unsigned long vector)\r
76 {\r
77    if (vector < 64 || vector > 192) {\r
78       VECTORDISPLAY2("User Defined Vector #%d\n",vector);\r
79    }\r
80 }\r
81 \r
82 /***********************************************************************\r
83  *\r
84  * This is the exception handler for all  exceptions common to all \r
85  * chips ColdFire.  Most exceptions do nothing, but some of the more \r
86  * important ones are handled to some extent.\r
87  *\r
88  * Called by asm_exception_handler \r
89  *\r
90  * The ColdFire family of processors has a simplified exception stack\r
91  * frame that looks like the following:\r
92  *\r
93  *              3322222222221111 111111\r
94  *              1098765432109876 5432109876543210\r
95  *           8 +----------------+----------------+\r
96  *             |         Program Counter         |\r
97  *           4 +----------------+----------------+\r
98  *             |FS/Fmt/Vector/FS|      SR        |\r
99  *   SP -->  0 +----------------+----------------+\r
100  *\r
101  * The stack self-aligns to a 4-byte boundary at an exception, with\r
102  * the FS/Fmt/Vector/FS field indicating the size of the adjustment\r
103  * (SP += 0,1,2,3 bytes).\r
104  *             31     28 27      26 25    18 17      16 15                                  0\r
105  *           4 +---------------------------------------+------------------------------------+\r
106  *             | Format | FS[3..2] | Vector | FS[1..0] |                 SR                 |\r
107  *   SP -->  0 +---------------------------------------+------------------------------------+\r
108  */ \r
109 #define MCF5XXX_RD_SF_FORMAT(PTR)   \\r
110    ((*((unsigned short *)(PTR)) >> 12) & 0x00FF)\r
111 \r
112 #define MCF5XXX_RD_SF_VECTOR(PTR)   \\r
113    ((*((unsigned short *)(PTR)) >>  2) & 0x00FF)\r
114 \r
115 #define MCF5XXX_RD_SF_FS(PTR)    \\r
116    ( ((*((unsigned short *)(PTR)) & 0x0C00) >> 8) | (*((unsigned short *)(PTR)) & 0x0003) )\r
117 \r
118 #define MCF5XXX_SF_SR(PTR)    *(((unsigned short *)(PTR))+1)\r
119 \r
120 #define MCF5XXX_SF_PC(PTR)    *((unsigned long *)(PTR)+1)\r
121 \r
122 #define MCF5XXX_EXCEPTFMT     "%s -- PC = %#08X\n"\r
123 \r
124 \r
125 void mcf_exception_handler(void *framepointer) \r
126 {\r
127    volatile unsigned long exceptionStackFrame = (*(unsigned long *)(framepointer)); \r
128    volatile unsigned short stackFrameSR       = MCF5XXX_SF_SR(framepointer);  \r
129    volatile unsigned short stackFrameWord     = (*(unsigned short *)(framepointer));  \r
130    volatile unsigned long  stackFrameFormat   = (unsigned long)MCF5XXX_RD_SF_FORMAT(&stackFrameWord);\r
131    volatile unsigned long  stackFrameFS       = (unsigned long)MCF5XXX_RD_SF_FS(&stackFrameWord);\r
132    volatile unsigned long  stackFrameVector   = (unsigned long)MCF5XXX_RD_SF_VECTOR(&stackFrameWord);\r
133    volatile unsigned long  stackFramePC       = MCF5XXX_SF_PC(framepointer);\r
134 \r
135    switch (stackFrameFormat)\r
136    {\r
137       case 4:\r
138       case 5:\r
139       case 6:\r
140       case 7:\r
141          break;\r
142       default:\r
143          VECTORDISPLAY3(MCF5XXX_EXCEPTFMT,"Illegal stack type", stackFramePC);\r
144          break;\r
145    }\r
146 \r
147    switch (stackFrameVector)\r
148    {\r
149    case 2:\r
150       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Access Error", stackFramePC);\r
151       switch (stackFrameFS)\r
152       {\r
153          case 4:\r
154             VECTORDISPLAY("Error on instruction fetch\n");\r
155             break;\r
156          case 8:\r
157             VECTORDISPLAY("Error on operand write\n");\r
158             break;\r
159          case 9:\r
160             VECTORDISPLAY("Attempted write to write-protected space\n");\r
161             break;\r
162          case 12:\r
163             VECTORDISPLAY("Error on operand read\n");\r
164             break;\r
165          default:\r
166             VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
167             break;\r
168       }\r
169       break;\r
170    case 3:\r
171       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Address Error", stackFramePC);\r
172       switch (stackFrameFS)\r
173       {\r
174          case 4:\r
175             VECTORDISPLAY("Error on instruction fetch\n");\r
176             break;\r
177          case 8:\r
178             VECTORDISPLAY("Error on operand write\n");\r
179             break;\r
180          case 9:\r
181             VECTORDISPLAY("Attempted write to write-protected space\n");\r
182             break;\r
183          case 12:\r
184             VECTORDISPLAY("Error on operand read\n");\r
185             break;\r
186          default:\r
187             VECTORDISPLAY("Reserved Fault Status Encoding\n");\r
188             break;\r
189       }\r
190       break;\r
191    case 4:\r
192       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Illegal instruction", stackFramePC);\r
193       break;\r
194    case 8:\r
195       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Privilege violation", stackFramePC);\r
196       break;\r
197    case 9:\r
198       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Trace Exception", stackFramePC);\r
199       break;\r
200    case 10:\r
201       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented A-Line Instruction",     stackFramePC);\r
202       break;\r
203    case 11:\r
204       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unimplemented F-Line Instruction",     stackFramePC);\r
205       break;\r
206    case 12:\r
207       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Debug Interrupt", stackFramePC);\r
208       break;\r
209    case 14:\r
210       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Format Error", stackFramePC);\r
211       break;\r
212    case 15:\r
213       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Unitialized Interrupt", stackFramePC);\r
214       break;\r
215    case 24:\r
216       VECTORDISPLAY3(MCF5XXX_EXCEPTFMT, "Spurious Interrupt", stackFramePC);\r
217       break;\r
218    case 25:\r
219    case 26:\r
220    case 27:\r
221    case 28:\r
222    case 29:\r
223    case 30:\r
224    case 31:\r
225       VECTORDISPLAY2("Autovector interrupt level %d\n", stackFrameVector - 24);\r
226       break;\r
227    case 32:\r
228    case 33:\r
229    case 34:\r
230    case 35:\r
231    case 36:\r
232    case 37:\r
233    case 38:\r
234    case 39:\r
235    case 40:\r
236    case 41:\r
237    case 42:\r
238    case 43:\r
239    case 44:\r
240    case 45:\r
241    case 46:\r
242    case 47:\r
243       VECTORDISPLAY2("TRAP #%d\n", stackFrameVector - 32);\r
244       break;\r
245    case 5:\r
246    case 6:\r
247    case 7:\r
248    case 13:\r
249    case 16:\r
250    case 17:\r
251    case 18:\r
252    case 19:\r
253    case 20:\r
254    case 21:\r
255    case 22:\r
256    case 23:\r
257    case 48:\r
258    case 49:\r
259    case 50:\r
260    case 51:\r
261    case 52:\r
262    case 53:\r
263    case 54:\r
264    case 55:\r
265    case 56:\r
266    case 57:\r
267    case 58:\r
268    case 59:\r
269    case 60:\r
270    case 61:\r
271    case 62:\r
272    case 63:\r
273       VECTORDISPLAY2("Reserved: #%d\n", stackFrameVector);\r
274       break;\r
275    default:\r
276       derivative_interrupt(stackFrameVector);\r
277    break;\r
278    }\r
279 }\r
280 \r
281 #if REGISTER_ABI\r
282 asm void asm_exception_handler(void)\r
283 {\r
284    link     a6,#0 \r
285    lea     -20(sp), sp\r
286    movem.l d0-d2/a0-a1, (sp)\r
287    lea     24(sp),a0   /* A0 point to exception stack frame on the stack */\r
288    jsr     mcf_exception_handler\r
289    movem.l (sp), d0-d2/a0-a1\r
290    lea     20(sp), sp\r
291    unlk a6\r
292    rte\r
293 }\r
294 #else\r
295 asm void asm_exception_handler(void)\r
296 {\r
297    link     a6,#0 \r
298    lea     -20(sp), sp\r
299    movem.l d0-d2/a0-a1, (sp)\r
300    pea     24(sp)   /* push exception frame address */\r
301    jsr     mcf_exception_handler\r
302    movem.l 4(sp), d0-d2/a0-a1\r
303    lea     24(sp), sp\r
304    unlk a6\r
305    rte\r
306 }\r
307 #endif\r
308 \r
309 typedef void (* vectorTableEntryType)(void);\r
310 \r
311 #if CONSOLE_IO_SUPPORT\r
312 vectorTableEntryType vector_printf @Vtrap14     = TrapHandler_printf;\r
313 #endif\r
314 \r
315 /*\r
316  *  MCF51CN128 vector table\r
317  *  CF V1 has 114 vector + SP_INIT in the vector table (115 entries)\r
318  */\r
319 \r
320 __declspec(weak) vectorTableEntryType vector_0   @INITSP = (vectorTableEntryType)&_SP_INIT;\r
321 __declspec(weak) vectorTableEntryType vector_1   @INITPC = (vectorTableEntryType)&_startup;\r
322 __declspec(weak) vectorTableEntryType vector_2   @Vaccerr = asm_exception_handler;\r
323 __declspec(weak) vectorTableEntryType vector_3   @Vadderr = asm_exception_handler;\r
324 __declspec(weak) vectorTableEntryType vector_4   @Viinstr = asm_exception_handler;\r
325 __declspec(weak) vectorTableEntryType vector_5   @VReserved5 = asm_exception_handler;\r
326 __declspec(weak) vectorTableEntryType vector_6   @VReserved6 = asm_exception_handler;\r
327 __declspec(weak) vectorTableEntryType vector_7   @VReserved7 = asm_exception_handler;\r
328 __declspec(weak) vectorTableEntryType vector_8   @Vprviol = asm_exception_handler;\r
329 __declspec(weak) vectorTableEntryType vector_9   @Vtrace = asm_exception_handler;\r
330 __declspec(weak) vectorTableEntryType vector_10  @Vunilaop = asm_exception_handler;\r
331 __declspec(weak) vectorTableEntryType vector_11  @Vunilfop = asm_exception_handler;\r
332 __declspec(weak) vectorTableEntryType vector_12  @Vdbgi = asm_exception_handler;\r
333 __declspec(weak) vectorTableEntryType vector_13  @VReserved13 = asm_exception_handler;\r
334 __declspec(weak) vectorTableEntryType vector_14  @Vferror = asm_exception_handler;\r
335 __declspec(weak) vectorTableEntryType vector_15  @VReserved15 = asm_exception_handler;\r
336 __declspec(weak) vectorTableEntryType vector_16  @VReserved16 = asm_exception_handler;\r
337 __declspec(weak) vectorTableEntryType vector_17  @VReserved17 = asm_exception_handler;\r
338 __declspec(weak) vectorTableEntryType vector_18  @VReserved18 = asm_exception_handler;\r
339 __declspec(weak) vectorTableEntryType vector_19  @VReserved19 = asm_exception_handler;\r
340 __declspec(weak) vectorTableEntryType vector_20  @VReserved20 = asm_exception_handler;\r
341 __declspec(weak) vectorTableEntryType vector_21  @VReserved21 = asm_exception_handler;\r
342 __declspec(weak) vectorTableEntryType vector_22  @VReserved22 = asm_exception_handler;\r
343 __declspec(weak) vectorTableEntryType vector_23  @VReserved23 = asm_exception_handler;\r
344 __declspec(weak) vectorTableEntryType vector_24  @Vspuri = asm_exception_handler;\r
345 __declspec(weak) vectorTableEntryType vector_25  @VReserved25 = asm_exception_handler;\r
346 __declspec(weak) vectorTableEntryType vector_26  @VReserved26 = asm_exception_handler;\r
347 __declspec(weak) vectorTableEntryType vector_27  @VReserved27 = asm_exception_handler;\r
348 __declspec(weak) vectorTableEntryType vector_28  @VReserved28 = asm_exception_handler;\r
349 __declspec(weak) vectorTableEntryType vector_29  @VReserved29 = asm_exception_handler;\r
350 __declspec(weak) vectorTableEntryType vector_30  @VReserved30 = asm_exception_handler;\r
351 __declspec(weak) vectorTableEntryType vector_31  @VReserved31 = asm_exception_handler;\r
352 __declspec(weak) vectorTableEntryType vector_32  @Vtrap0 = asm_exception_handler;\r
353 __declspec(weak) vectorTableEntryType vector_33  @Vtrap1 = asm_exception_handler;\r
354 __declspec(weak) vectorTableEntryType vector_34  @Vtrap2 = asm_exception_handler;\r
355 __declspec(weak) vectorTableEntryType vector_35  @Vtrap3 = asm_exception_handler;\r
356 __declspec(weak) vectorTableEntryType vector_36  @Vtrap4 = asm_exception_handler;\r
357 __declspec(weak) vectorTableEntryType vector_37  @Vtrap5 = asm_exception_handler;\r
358 __declspec(weak) vectorTableEntryType vector_38  @Vtrap6 = asm_exception_handler;\r
359 __declspec(weak) vectorTableEntryType vector_39  @Vtrap7 = asm_exception_handler;\r
360 __declspec(weak) vectorTableEntryType vector_40  @Vtrap8 = asm_exception_handler;\r
361 __declspec(weak) vectorTableEntryType vector_41  @Vtrap9 = asm_exception_handler;\r
362 __declspec(weak) vectorTableEntryType vector_42  @Vtrap10 = asm_exception_handler;\r
363 __declspec(weak) vectorTableEntryType vector_43  @Vtrap11 = asm_exception_handler;\r
364 __declspec(weak) vectorTableEntryType vector_44  @Vtrap12 = asm_exception_handler;\r
365 __declspec(weak) vectorTableEntryType vector_45  @Vtrap13 = asm_exception_handler;\r
366 #if CONSOLE_IO_SUPPORT == 0\r
367 __declspec(weak) vectorTableEntryType vector_46  @Vtrap14 = asm_exception_handler;\r
368 #endif\r
369 __declspec(weak) vectorTableEntryType vector_47  @Vtrap15 = asm_exception_handler;\r
370 __declspec(weak) vectorTableEntryType vector_48  @VReserved48 = asm_exception_handler;\r
371 __declspec(weak) vectorTableEntryType vector_49  @VReserved49 = asm_exception_handler;\r
372 __declspec(weak) vectorTableEntryType vector_50  @VReserved50 = asm_exception_handler;\r
373 __declspec(weak) vectorTableEntryType vector_51  @VReserved51 = asm_exception_handler;\r
374 __declspec(weak) vectorTableEntryType vector_52  @VReserved52 = asm_exception_handler;\r
375 __declspec(weak) vectorTableEntryType vector_53  @VReserved53 = asm_exception_handler;\r
376 __declspec(weak) vectorTableEntryType vector_54  @VReserved54 = asm_exception_handler;\r
377 __declspec(weak) vectorTableEntryType vector_55  @VReserved55 = asm_exception_handler;\r
378 __declspec(weak) vectorTableEntryType vector_56  @VReserved56 = asm_exception_handler;\r
379 __declspec(weak) vectorTableEntryType vector_57  @VReserved57 = asm_exception_handler;\r
380 __declspec(weak) vectorTableEntryType vector_58  @VReserved58 = asm_exception_handler;\r
381 __declspec(weak) vectorTableEntryType vector_59  @VReserved59 = asm_exception_handler;\r
382 __declspec(weak) vectorTableEntryType vector_60  @VReserved60 = asm_exception_handler;\r
383 __declspec(weak) vectorTableEntryType vector_61  @Vunsinstr = asm_exception_handler;\r
384 __declspec(weak) vectorTableEntryType vector_62  @VReserved62 = asm_exception_handler;\r
385 __declspec(weak) vectorTableEntryType vector_63  @VReserved63 = asm_exception_handler;\r
386 __declspec(weak) vectorTableEntryType vector_64  @Virq = asm_exception_handler;\r
387 __declspec(weak) vectorTableEntryType vector_65  @Vlvd = asm_exception_handler;\r
388 __declspec(weak) vectorTableEntryType vector_66  @Vlol = asm_exception_handler;\r
389 __declspec(weak) vectorTableEntryType vector_67  @Vtpm1ch0 = asm_exception_handler;\r
390 __declspec(weak) vectorTableEntryType vector_68  @Vtpm1ch1 = asm_exception_handler;\r
391 __declspec(weak) vectorTableEntryType vector_69  @Vtpm1ch2 = asm_exception_handler;\r
392 __declspec(weak) vectorTableEntryType vector_70  @Vtpm1ovf = asm_exception_handler;\r
393 __declspec(weak) vectorTableEntryType vector_71  @Vmtim1 = asm_exception_handler;\r
394 __declspec(weak) vectorTableEntryType vector_72  @Vtpm2ch0 = asm_exception_handler;\r
395 __declspec(weak) vectorTableEntryType vector_73  @Vtpm2ch1 = asm_exception_handler;\r
396 __declspec(weak) vectorTableEntryType vector_74  @Vtpm2ch2 = asm_exception_handler;\r
397 __declspec(weak) vectorTableEntryType vector_75  @Vtpm2ovf = asm_exception_handler;\r
398 __declspec(weak) vectorTableEntryType vector_76  @Vspi1 = asm_exception_handler;\r
399 __declspec(weak) vectorTableEntryType vector_77  @Vspi2 = asm_exception_handler;\r
400 __declspec(weak) vectorTableEntryType vector_78  @Vmtim2 = asm_exception_handler;\r
401 __declspec(weak) vectorTableEntryType vector_79  @Vsci1err = asm_exception_handler;\r
402 __declspec(weak) vectorTableEntryType vector_80  @Vsci1rx = asm_exception_handler;\r
403 __declspec(weak) vectorTableEntryType vector_81  @Vsci1tx = asm_exception_handler;\r
404 __declspec(weak) vectorTableEntryType vector_82  @Vsci2err = asm_exception_handler;\r
405 __declspec(weak) vectorTableEntryType vector_83  @Vsci2rx = asm_exception_handler;\r
406 __declspec(weak) vectorTableEntryType vector_84  @Vsci2tx = asm_exception_handler;\r
407 __declspec(weak) vectorTableEntryType vector_85  @Vsci3or = asm_exception_handler;\r
408 __declspec(weak) vectorTableEntryType vector_86  @Vfectxf = vFECISRHandler;\r
409 __declspec(weak) vectorTableEntryType vector_87  @Vfecrxf = vFECISRHandler;\r
410 __declspec(weak) vectorTableEntryType vector_88  @Vfecother = vFECISRHandler;\r
411 __declspec(weak) vectorTableEntryType vector_89  @Vfechberr = vFECISRHandler;\r
412 __declspec(weak) vectorTableEntryType vector_90  @Vfecbabr = vFECISRHandler;\r
413 __declspec(weak) vectorTableEntryType vector_91  @Vfecbabt = vFECISRHandler;\r
414 __declspec(weak) vectorTableEntryType vector_92  @Vfecgra = vFECISRHandler;\r
415 __declspec(weak) vectorTableEntryType vector_93  @Vfectxb = vFECISRHandler;\r
416 __declspec(weak) vectorTableEntryType vector_94  @Vfecrxb = vFECISRHandler;\r
417 __declspec(weak) vectorTableEntryType vector_95  @Vfecmii = vFECISRHandler;\r
418 __declspec(weak) vectorTableEntryType vector_96  @Vfeceberr = vFECISRHandler;\r
419 __declspec(weak) vectorTableEntryType vector_97  @Vfeclc = vFECISRHandler;\r
420 __declspec(weak) vectorTableEntryType vector_98  @Vfecrl = vFECISRHandler;\r
421 __declspec(weak) vectorTableEntryType vector_99  @Vfecun = vFECISRHandler;\r
422 __declspec(weak) vectorTableEntryType vector_100 @Vsci3err = asm_exception_handler;\r
423 __declspec(weak) vectorTableEntryType vector_101 @Vsci3rx = asm_exception_handler;\r
424 __declspec(weak) vectorTableEntryType vector_102 @Vsci3tx = asm_exception_handler;\r
425 __declspec(weak) vectorTableEntryType vector_103 @VL7swi = asm_exception_handler;\r
426 __declspec(weak) vectorTableEntryType vector_104 @VL6swi = asm_exception_handler;\r
427 __declspec(weak) vectorTableEntryType vector_105 @VL5swi = asm_exception_handler;\r
428 __declspec(weak) vectorTableEntryType vector_106 @VL4swi = asm_exception_handler;\r
429 __declspec(weak) vectorTableEntryType vector_107 @VL3swi = asm_exception_handler;\r
430 __declspec(weak) vectorTableEntryType vector_108 @VL2swi = asm_exception_handler;\r
431 __declspec(weak) vectorTableEntryType vector_109 @VL1swi = vPortYieldISR;\r
432 __declspec(weak) vectorTableEntryType vector_110 @Viic1 = asm_exception_handler;\r
433 __declspec(weak) vectorTableEntryType vector_111 @Viic2 = asm_exception_handler;\r
434 __declspec(weak) vectorTableEntryType vector_112 @Vadc = asm_exception_handler;\r
435 __declspec(weak) vectorTableEntryType vector_113 @Vkeyboard = asm_exception_handler;\r
436 __declspec(weak) vectorTableEntryType vector_114 @Vrtc = asm_exception_handler;\r
437 \r
438 \r
439 \r
440 #ifdef __cplusplus\r
441 }\r
442 #endif\r
443 \r
444 \r