]> begriffs open source - cmsis-freertos/blob - Demo/ARM7_STR75x_IAR/75x_vect.s
Set error state if no delay or already expired
[cmsis-freertos] / Demo / ARM7_STR75x_IAR / 75x_vect.s
1 ;******************** (C) COPYRIGHT 2006 STMicroelectronics ********************
2 ;* File Name          : 75x_vect.c
3 ;* Author             : MCD Application Team
4 ;* Date First Issued  : 03/10/2006
5 ;* Description        : This file used to initialize the exception and IRQ
6 ;*                      vectors, and to enter/return to/from exceptions handlers.
7 ;*******************************************************************************
8 ; History:
9 ; 07/17/2006 : V1.0
10 ; 03/10/2006 : V0.1
11 ;*******************************************************************************
12 ;* THE PRESENT SOFTWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS
13 ;* WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME.
14 ;* AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY DIRECT,
15 ;* INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE
16 ;* CONTENT OF SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING
17 ;* INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.
18 ;*******************************************************************************
19
20 #include "FreeRTOSConfig.h"
21 #include "ISR_Support.h"
22
23
24                 PROGRAM ?RESET
25                 SECTION .intvec:CODE(2)                 
26                 CODE32
27
28 EIC_base_addr         EQU    0xFFFFF800 ; EIC base address
29 CICR_off_addr         EQU    0x04       ; Current Interrupt Channel Register
30 IVR_off_addr          EQU    0x18       ; Interrupt Vector Register
31 IPR_off_addr          EQU    0x40       ; Interrupt Pending Register
32
33
34 ;*******************************************************************************
35 ;              Import  the __program_start address from 75x_init.s
36 ;*******************************************************************************
37
38         IMPORT  __iar_program_start
39
40
41
42 ;*******************************************************************************
43 ;                      Import exception handlers
44 ;*******************************************************************************
45
46         IMPORT  Undefined_Handler
47         IMPORT  SWI_Handler
48         IMPORT  Prefetch_Handler
49         IMPORT  Abort_Handler
50         IMPORT  FIQ_Handler
51
52 ;*******************************************************************************
53 ;                   Import IRQ handlers from 75x_it.c
54 ;*******************************************************************************
55
56         IMPORT WAKUP_IRQHandler
57         IMPORT TIM2_OC2_IRQHandler
58         IMPORT TIM2_OC1_IRQHandler
59         IMPORT TIM2_IC12_IRQHandler
60         IMPORT TIM2_UP_IRQHandler
61         IMPORT TIM1_OC2_IRQHandler
62         IMPORT TIM1_OC1_IRQHandler
63         IMPORT TIM1_IC12_IRQHandler
64         IMPORT TIM1_UP_IRQHandler
65         IMPORT TIM0_OC2_IRQHandler
66         IMPORT TIM0_OC1_IRQHandler
67         IMPORT TIM0_IC12_IRQHandler
68         IMPORT TIM0_UP_IRQHandler
69         IMPORT PWM_OC123_IRQHandler
70         IMPORT PWM_EM_IRQHandler
71         IMPORT PWM_UP_IRQHandler
72         IMPORT I2C_IRQHandler
73         IMPORT SSP1_IRQHandler
74         IMPORT SSP0_IRQHandler
75         IMPORT UART2_IRQHandler
76         IMPORT UART1_IRQHandler
77         IMPORT vSerialISR
78         IMPORT CAN_IRQHandler
79         IMPORT USB_LP_IRQHandler
80         IMPORT USB_HP_IRQHandler
81         IMPORT ADC_IRQHandler
82         IMPORT DMA_IRQHandler
83         IMPORT EXTIT_IRQHandler
84         IMPORT MRCC_IRQHandler
85         IMPORT FLASHSMI_IRQHandler
86         IMPORT RTC_IRQHandler
87         IMPORT TB_IRQHandler
88                 IMPORT vPortPreemptiveTick
89                 IMPORT vPortYieldProcessor
90                 IMPORT UART0_IRQHandler
91
92 ;*******************************************************************************
93 ;            Export Peripherals IRQ handlers table address
94 ;*******************************************************************************
95
96         EXPORT  WAKUP_Addr
97
98 ;*******************************************************************************
99 ;                        Exception vectors
100 ;*******************************************************************************
101
102
103         LDR     PC, Reset_Addr
104         LDR     PC, Undefined_Addr
105         LDR     PC, SWI_Addr
106         LDR     PC, Prefetch_Addr
107         LDR     PC, Abort_Addr
108         NOP                             ; Reserved vector
109         LDR     PC, IRQ_Addr
110         LDR     PC, FIQ_Addr
111
112 ;*******************************************************************************
113 ;               Exception handlers address table
114 ;*******************************************************************************
115
116 Reset_Addr      DCD     __iar_program_start
117 Undefined_Addr  DCD     UndefinedHandler
118 SWI_Addr        DCD     vPortYieldProcessor
119 Prefetch_Addr   DCD     PrefetchAbortHandler
120 Abort_Addr      DCD     DataAbortHandler
121                 DCD     0               ; Reserved vector
122 IRQ_Addr        DCD     IRQHandler
123 FIQ_Addr        DCD     FIQHandler
124
125 ;*******************************************************************************
126 ;              Peripherals IRQ handlers address table
127 ;*******************************************************************************
128
129 WAKUP_Addr         DCD  WAKUPIRQHandler
130 TIM2_OC2_Addr      DCD  TIM2_OC2IRQHandler
131 TIM2_OC1_Addr      DCD  TIM2_OC1IRQHandler
132 TIM2_IC12_Addr     DCD  TIM2_IC12IRQHandler
133 TIM2_UP_Addr       DCD  TIM2_UPIRQHandler
134 TIM1_OC2_Addr      DCD  TIM1_OC2IRQHandler
135 TIM1_OC1_Addr      DCD  TIM1_OC1IRQHandler
136 TIM1_IC12_Addr     DCD  TIM1_IC12IRQHandler
137 TIM1_UP_Addr       DCD  TIM1_UPIRQHandler
138 TIM0_OC2_Addr      DCD  TIM0_OC2IRQHandler
139 TIM0_OC1_Addr      DCD  TIM0_OC1IRQHandler
140 TIM0_IC12_Addr     DCD  TIM0_IC12IRQHandler
141 TIM0_UP_Addr       DCD  TIM0_UPIRQHandler
142 PWM_OC123_Addr     DCD  PWM_OC123IRQHandler
143 PWM_EM_Addr        DCD  PWM_EMIRQHandler
144 PWM_UP_Addr        DCD  PWM_UPIRQHandler
145 I2C_Addr           DCD  I2CIRQHandler
146 SSP1_Addr          DCD  SSP1IRQHandler
147 SSP0_Addr          DCD  SSP0IRQHandler
148 UART2_Addr         DCD  UART2IRQHandler
149 UART1_Addr         DCD  UART1IRQHandler
150 UART0_Addr         DCD  vSerialISR
151 CAN_Addr           DCD  CANIRQHandler
152 USB_LP_Addr        DCD  USB_LPIRQHandler
153 USB_HP_Addr        DCD  USB_HPIRQHandler
154 ADC_Addr           DCD  ADCIRQHandler
155 DMA_Addr           DCD  DMAIRQHandler
156 EXTIT_Addr         DCD  EXTITIRQHandler
157 MRCC_Addr          DCD  MRCCIRQHandler
158 FLASHSMI_Addr      DCD  FLASHSMIIRQHandler
159 RTC_Addr           DCD  RTCIRQHandler
160 TB_Addr            DCD  vPortPreemptiveTick
161
162 ;*******************************************************************************
163 ;                         Exception Handlers
164 ;*******************************************************************************
165
166 ;*******************************************************************************
167 ;* Macro Name     : SaveContext
168 ;* Description    : This macro used to save the context before entering
169 ;*                  an exception handler.
170 ;* Input          : The range of registers to store.
171 ;* Output         : none
172 ;*******************************************************************************
173 SaveContext MACRO reg1,reg2
174         STMFD  sp!,{reg1-reg2,lr} ; Save The workspace plus the current return
175                               ; address lr_ mode into the stack.
176         MRS    r1,spsr        ; Save the spsr_mode into r1.
177         STMFD  sp!,{r1}       ; Save spsr.
178         ENDM
179
180 ;*******************************************************************************
181 ;* Macro Name     : RestoreContext
182 ;* Description    : This macro used to restore the context to return from
183 ;*                  an exception handler and continue the program execution.
184 ;* Input          : The range of registers to restore.
185 ;* Output         : none
186 ;*******************************************************************************
187 RestoreContext MACRO reg1,reg2
188         LDMFD   sp!,{r1}        ; Restore the saved spsr_mode into r1.
189         MSR     spsr_cxsf,r1    ; Restore spsr_mode.
190         LDMFD   sp!,{reg1-reg2,pc}^; Return to the instruction following...
191                                 ; ...the exception interrupt.
192         ENDM
193
194 ;*******************************************************************************
195 ;* Function Name  : UndefinedHandler
196 ;* Description    : This function called when undefined instruction exception
197 ;*                  is entered.
198 ;* Input          : none
199 ;* Output         : none
200 ;*******************************************************************************
201 UndefinedHandler
202         SaveContext r0,r12         ; Save the workspace plus the current
203                                    ; return address lr_ und and spsr_und.
204         ldr r0,=Undefined_Handler
205         ldr lr,=Undefined_Handler_end
206         bx r0                       ;Branch to Undefined_Handler
207 Undefined_Handler_end:
208         RestoreContext r0,r12      ; Return to the instruction following...
209                                     ; ...the undefined instruction.
210
211 ;*******************************************************************************
212 ;* Function Name  : SWIHandler
213 ;* Description    : This function called when SWI instruction executed.
214 ;* Input          : none
215 ;* Output         : none
216 ;*******************************************************************************
217 SWIHandler
218         SaveContext r0,r12         ; Save the workspace plus the current
219                                    ; return address lr_ svc and spsr_svc.
220         ldr r0,= SWI_Handler
221         ldr lr,= SWI_Handler_end
222         bx r0                       ;Branch to  SWI_Handler
223 SWI_Handler_end:
224         RestoreContext r0,r12     ; Return to the instruction following...
225                                   ; ...the SWI instruction.
226
227 ;*******************************************************************************
228 ;* Function Name  : IRQHandler
229 ;* Description    : This function called when IRQ exception is entered.
230 ;* Input          : none
231 ;* Output         : none
232 ;*******************************************************************************
233 IRQHandler
234         portSAVE_CONTEXT                                        ; Save the context of the current task.
235
236         LDR    r0, =EIC_base_addr
237         LDR    r1, =IVR_off_addr
238         LDR    lr, =ReturnAddress                       ; Load the return address.      
239         ADD    pc,r0,r1                                         ; Branch to the IRQ handler.
240 ReturnAddress
241         LDR    r0, =EIC_base_addr
242         LDR    r2, [r0, #CICR_off_addr]         ; Get the IRQ channel number
243         MOV    r3,#1
244         MOV    r3,r3,LSL r2
245         STR    r3,[r0, #IPR_off_addr]           ; Clear the corresponding IPR bit.
246         
247         portRESTORE_CONTEXT                                     ; Restore the context of the selected task.
248
249         
250 ;*******************************************************************************
251 ;* Function Name  : PrefetchAbortHandler
252 ;* Description    : This function called when Prefetch Abort exception is entered.
253 ;* Input          : none
254 ;* Output         : none
255 ;*******************************************************************************
256 PrefetchAbortHandler
257         SUB    lr,lr,#4        ; Update the link register.
258         SaveContext r0,r7      ; Save the workspace plus the current
259                                ; return address lr_abt and spsr_abt.
260         ldr r0,= Prefetch_Handler
261         ldr lr,= Prefetch_Handler_end
262         bx r0                       ;Branch to  Prefetch_Handler
263 Prefetch_Handler_end:
264         RestoreContext r0,r7   ; Return to the instruction following that...
265                                ; ...has generated the prefetch abort exception.
266
267 ;*******************************************************************************
268 ;* Function Name  : DataAbortHandler
269 ;* Description    : This function is called when Data Abort exception is entered.
270 ;* Input          : none
271 ;* Output         : none
272 ;*******************************************************************************
273 DataAbortHandler
274         SUB    lr,lr,#8            ; Update the link register.
275         SaveContext r0,r12         ; Save the workspace plus the current
276                                    ; return address lr_ abt and spsr_abt.
277         ldr r0,= Abort_Handler
278         ldr lr,= Abort_Handler_end
279         bx r0                       ;Branch to  Abort_Handler
280 Abort_Handler_end:
281         RestoreContext r0,r12       ; Return to the instruction following that...
282                                     ; ...has generated the data abort exception.
283
284 ;*******************************************************************************
285 ;* Function Name  : FIQHandler
286 ;* Description    : This function is called when FIQ exception is entered.
287 ;* Input          : none
288 ;* Output         : none
289 ;*******************************************************************************
290 FIQHandler
291         SUB    lr,lr,#4            ; Update the link register.
292         SaveContext r0,r7          ; Save the workspace plus the current
293                                    ; return address lr_ fiq and spsr_fiq.
294         ldr r0,= FIQ_Handler
295         ldr lr,= FIQ_Handler_end
296         bx r0                       ;Branch to  FIQ_Handler
297 FIQ_Handler_end:
298         RestoreContext r0,r7        ; Restore the context and return to the...
299                                     ; ...program execution.
300
301 ;*******************************************************************************
302 ;* Macro Name     : IRQ_to_SYS
303 ;* Description    : This macro used to switch form IRQ mode to SYS mode.
304 ;* Input          : none.
305 ;* Output         : none
306 ;*******************************************************************************
307 IRQ_to_SYS MACRO
308         MSR    cpsr_c,#0x1F
309         STMFD  sp!,{lr}
310        ENDM
311
312 ;*******************************************************************************
313 ;* Macro Name     : SYS_to_IRQ
314 ;* Description    : This macro used to switch from SYS mode to IRQ mode.
315 ;* Input          : none.
316 ;* Output         : none
317 ;*******************************************************************************
318 SYS_to_IRQ MACRO
319         LDMFD  sp!,{lr}
320         MSR    cpsr_c,#0xD2
321         MOV    pc,lr
322        ENDM
323
324 ;*******************************************************************************
325 ;* Function Name  : WAKUPIRQHandler
326 ;* Description    : This function used to switch to SYS mode before entering
327 ;*                  the WAKUP_IRQHandler function located in 75x_it.c.
328 ;*                  Then to return to IRQ mode after the WAKUP_IRQHandler
329 ;*                  function termination.
330 ;* Input          : none
331 ;* Output         : none
332 ;*******************************************************************************
333 WAKUPIRQHandler
334         IRQ_to_SYS
335         ldr r0,=WAKUP_IRQHandler
336         ldr lr,=WAKUP_IRQHandler_end
337         bx r0
338 WAKUP_IRQHandler_end:
339         SYS_to_IRQ
340
341 ;*******************************************************************************
342 ;* Function Name  : TIM2_OC2IRQHandler
343 ;* Description    : This function used to switch to SYS mode before entering
344 ;*                  the TIM2_OC2_IRQHandler function located in 75x_it.c.
345 ;*                  Then to return to IRQ mode after the TIM2_OC2_IRQHandler
346 ;*                  function termination.
347 ;* Input          : none
348 ;* Output         : none
349 ;*******************************************************************************
350 TIM2_OC2IRQHandler
351         IRQ_to_SYS
352         ldr r0,=TIM2_OC2_IRQHandler
353         ldr lr,=TIM2_OC2_IRQHandler_end
354         bx r0
355 TIM2_OC2_IRQHandler_end:
356         SYS_to_IRQ
357
358 ;*******************************************************************************
359 ;* Function Name  : TIM2_OC1IRQHandler
360 ;* Description    : This function used to switch to SYS mode before entering
361 ;*                  the TIM2_OC1_IRQHandler function located in 75x_it.c.
362 ;*                  Then to return to IRQ mode after the TIM2_OC1_IRQHandler
363 ;*                  function termination.
364 ;* Input          : none
365 ;* Output         : none
366 ;*******************************************************************************
367 TIM2_OC1IRQHandler
368         IRQ_to_SYS
369         ldr r0,=TIM2_OC1_IRQHandler
370         ldr lr,=TIM2_OC1_IRQHandler_end
371         bx r0
372 TIM2_OC1_IRQHandler_end:
373         SYS_to_IRQ
374
375 ;*******************************************************************************
376 ;* Function Name  : TIM2_IC12IRQHandler
377 ;* Description    : This function used to switch to SYS mode before entering
378 ;*                  the TIM2_IC12_IRQHandler function located in 75x_it.c.
379 ;*                  Then to return to IRQ mode after the TIM2_IC12_IRQHandler
380 ;*                  function termination.
381 ;* Input          : none
382 ;* Output         : none
383 ;*******************************************************************************
384 TIM2_IC12IRQHandler
385         IRQ_to_SYS
386         ldr r0,=TIM2_IC12_IRQHandler
387         ldr lr,=TIM2_IC12_IRQHandler_end
388         bx r0
389 TIM2_IC12_IRQHandler_end:
390         SYS_to_IRQ
391
392 ;*******************************************************************************
393 ;* Function Name  : TIM2_UPIRQHandler
394 ;* Description    : This function used to switch to SYS mode before entering
395 ;*                  the TIM2_UP_IRQHandler function located in 75x_it.c.
396 ;*                  Then to return to IRQ mode after the TIM2_UP_IRQHandler
397 ;*                  function termination.
398 ;* Input          : none
399 ;* Output         : none
400 ;*******************************************************************************
401 TIM2_UPIRQHandler
402         IRQ_to_SYS
403         ldr r0,=TIM2_UP_IRQHandler
404         ldr lr,=TIM2_UP_IRQHandler_end
405         bx r0
406 TIM2_UP_IRQHandler_end:
407         SYS_to_IRQ
408
409 ;*******************************************************************************
410 ;* Function Name  : TIM1_OC2IRQHandler
411 ;* Description    : This function used to switch to SYS mode before entering
412 ;*                  the TIM1_OC2_IRQHandler function located in 75x_it.c.
413 ;*                  Then to return to IRQ mode after the TIM1_OC2_IRQHandler
414 ;*                  function termination.
415 ;* Input          : none
416 ;* Output         : none
417 ;*******************************************************************************
418 TIM1_OC2IRQHandler
419         IRQ_to_SYS
420         ldr r0,=TIM1_OC2_IRQHandler
421         ldr lr,=TIM1_OC2_IRQHandler_end
422         bx r0
423 TIM1_OC2_IRQHandler_end:
424         SYS_to_IRQ
425
426 ;*******************************************************************************
427 ;* Function Name  : TIM1_OC1IRQHandler
428 ;* Description    : This function used to switch to SYS mode before entering
429 ;*                  the TIM1_OC1_IRQHandler function located in 75x_it.c.
430 ;*                  Then to return to IRQ mode after the TIM1_OC1_IRQHandler
431 ;*                  function termination.
432 ;* Input          : none
433 ;* Output         : none
434 ;*******************************************************************************
435 TIM1_OC1IRQHandler
436         IRQ_to_SYS
437         ldr r0,=TIM1_OC1_IRQHandler
438         ldr lr,=TIM1_OC1_IRQHandler_end
439         bx r0
440 TIM1_OC1_IRQHandler_end:
441         SYS_to_IRQ
442
443 ;*******************************************************************************
444 ;* Function Name  : TIM1_IC12IRQHandler
445 ;* Description    : This function used to switch to SYS mode before entering
446 ;*                  the TIM1_IC12_IRQHandler function located in 75x_it.c.
447 ;*                  Then to return to IRQ mode after the TIM1_IC12_IRQHandler
448 ;*                  function termination.
449 ;* Input          : none
450 ;* Output         : none
451 ;*******************************************************************************
452 TIM1_IC12IRQHandler
453         IRQ_to_SYS
454         ldr r0,=TIM1_IC12_IRQHandler
455         ldr lr,=TIM1_IC12_IRQHandler_end
456         bx r0
457 TIM1_IC12_IRQHandler_end:
458         SYS_to_IRQ
459
460 ;*******************************************************************************
461 ;* Function Name  : TIM1_UPIRQHandler
462 ;* Description    : This function used to switch to SYS mode before entering
463 ;*                  the TIM1_UP_IRQHandler function located in 75x_it.c.
464 ;*                  Then to return to IRQ mode after the TIM1_UP_IRQHandler
465 ;*                  function termination.
466 ;* Input          : none
467 ;* Output         : none
468 ;*******************************************************************************
469 TIM1_UPIRQHandler
470         IRQ_to_SYS
471         ldr r0,=TIM1_UP_IRQHandler
472         ldr lr,=TIM1_UP_IRQHandler_end
473         bx r0
474 TIM1_UP_IRQHandler_end:
475         SYS_to_IRQ
476
477 ;*******************************************************************************
478 ;* Function Name  : TIM0_OC2IRQHandler
479 ;* Description    : This function used to switch to SYS mode before entering
480 ;*                  the TIM0_OC2_IRQHandler function located in 75x_it.c.
481 ;*                  Then to return to IRQ mode after the TIM0_OC2_IRQHandler
482 ;*                  function termination.
483 ;* Input          : none
484 ;* Output         : none
485 ;*******************************************************************************
486 TIM0_OC2IRQHandler
487         IRQ_to_SYS
488         ldr r0,=TIM0_OC2_IRQHandler
489         ldr lr,=TIM0_OC2_IRQHandler_end
490         bx r0
491 TIM0_OC2_IRQHandler_end:
492         SYS_to_IRQ
493
494 ;*******************************************************************************
495 ;* Function Name  : TIM0_OC1IRQHandler
496 ;* Description    : This function used to switch to SYS mode before entering
497 ;*                  the TIM0_OC1_IRQHandler function located in 75x_it.c.
498 ;*                  Then to return to IRQ mode after the TIM0_OC1_IRQHandler
499 ;*                  function termination.
500 ;* Input          : none
501 ;* Output         : none
502 ;*******************************************************************************
503 TIM0_OC1IRQHandler
504         IRQ_to_SYS
505         ldr r0,=TIM0_OC1_IRQHandler
506         ldr lr,=TIM0_OC1_IRQHandler_end
507         bx r0
508 TIM0_OC1_IRQHandler_end:
509         SYS_to_IRQ
510
511 ;*******************************************************************************
512 ;* Function Name  : TIM0_IC12IRQHandler
513 ;* Description    : This function used to switch to SYS mode before entering
514 ;*                  the TIM0_IC12_IRQHandler function located in 75x_it.c.
515 ;*                  Then to return to IRQ mode after the TIM0_IC12_IRQHandler
516 ;*                  function termination.
517 ;* Input          : none
518 ;* Output         : none
519 ;*******************************************************************************
520 TIM0_IC12IRQHandler
521         IRQ_to_SYS
522         ldr r0,=TIM0_IC12_IRQHandler
523         ldr lr,=TIM0_IC12_IRQHandler_end
524         bx r0
525 TIM0_IC12_IRQHandler_end:
526         SYS_to_IRQ
527
528 ;*******************************************************************************
529 ;* Function Name  : TIM0_UPIRQHandler
530 ;* Description    : This function used to switch to SYS mode before entering
531 ;*                  the TIM0_UP_IRQHandler function located in 75x_it.c.
532 ;*                  Then to return to IRQ mode after the TIM0_UP_IRQHandler
533 ;*                  function termination.
534 ;* Input          : none
535 ;* Output         : none
536 ;*******************************************************************************
537 TIM0_UPIRQHandler
538         IRQ_to_SYS
539         ldr r0,=TIM0_UP_IRQHandler
540         ldr lr,=TIM0_UP_IRQHandler_end
541         bx r0
542 TIM0_UP_IRQHandler_end:
543         SYS_to_IRQ
544
545 ;*******************************************************************************
546 ;* Function Name  : PWM_OC123IRQHandler
547 ;* Description    : This function used to switch to SYS mode before entering
548 ;*                  the PWM_OC123_IRQHandler function located in 75x_it.c.
549 ;*                  Then to return to IRQ mode after the PWM_OC123_IRQHandler
550 ;*                  function termination.
551 ;* Input          : none
552 ;* Output         : none
553 ;*******************************************************************************
554 PWM_OC123IRQHandler
555         IRQ_to_SYS
556         ldr r0,=PWM_OC123_IRQHandler
557         ldr lr,=PWM_OC123_IRQHandler_end
558         bx r0
559 PWM_OC123_IRQHandler_end:
560         SYS_to_IRQ
561
562 ;*******************************************************************************
563 ;* Function Name  : PWM_EMIRQHandler
564 ;* Description    : This function used to switch to SYS mode before entering
565 ;*                  the PWM_EM_IRQHandler function located in 75x_it.c.
566 ;*                  Then to return to IRQ mode after the PWM_EM_IRQHandler
567 ;*                  function termination.
568 ;* Input          : none
569 ;* Output         : none
570 ;*******************************************************************************
571 PWM_EMIRQHandler
572         IRQ_to_SYS
573         ldr r0,=PWM_EM_IRQHandler
574         ldr lr,=PWM_EM_IRQHandler_end
575         bx r0
576 PWM_EM_IRQHandler_end:
577         SYS_to_IRQ
578
579 ;*******************************************************************************
580 ;* Function Name  : PWM_UPIRQHandler
581 ;* Description    : This function used to switch to SYS mode before entering
582 ;*                  the PWM_UP_IRQHandler function located in 75x_it.c.
583 ;*                  Then to return to IRQ mode after the PWM_UP_IRQHandler
584 ;*                  function termination.
585 ;* Input          : none
586 ;* Output         : none
587 ;*******************************************************************************
588 PWM_UPIRQHandler
589         IRQ_to_SYS
590         ldr r0,=PWM_UP_IRQHandler
591         ldr lr,=PWM_UP_IRQHandler_end
592         bx r0
593 PWM_UP_IRQHandler_end:
594         SYS_to_IRQ
595
596 ;*******************************************************************************
597 ;* Function Name  : I2CIRQHandler
598 ;* Description    : This function used to switch to SYS mode before entering
599 ;*                  the I2C_IRQHandler function located in 75x_it.c.
600 ;*                  Then to return to IRQ mode after the I2C_IRQHandler function
601 ;*                  termination.
602 ;* Input          : none
603 ;* Output         : none
604 ;*******************************************************************************
605 I2CIRQHandler
606         IRQ_to_SYS
607         ldr r0,=I2C_IRQHandler
608         ldr lr,=I2C_IRQHandler_end
609         bx r0
610 I2C_IRQHandler_end:
611         SYS_to_IRQ
612
613 ;*******************************************************************************
614 ;* Function Name  : SSP1IRQHandler
615 ;* Description    : This function used to switch to SYS mode before entering
616 ;*                  the SSP1_IRQHandler function located in 75x_it.c.
617 ;*                  Then to return to IRQ mode after the SSP1_IRQHandler
618 ;*                  function termination.
619 ;* Input          : none
620 ;* Output         : none
621 ;*******************************************************************************
622 SSP1IRQHandler
623         IRQ_to_SYS
624         ldr r0,=SSP1_IRQHandler
625         ldr lr,=SSP1_IRQHandler_end
626         bx r0
627 SSP1_IRQHandler_end:
628         SYS_to_IRQ
629
630 ;*******************************************************************************
631 ;* Function Name  : SSP0IRQHandler
632 ;* Description    : This function used to switch to SYS mode before entering
633 ;*                  the SSP0_IRQHandler function located in 75x_it.c.
634 ;*                  Then to return to IRQ mode after the SSP0_IRQHandler
635 ;*                  function termination.
636 ;* Input          : none
637 ;* Output         : none
638 ;*******************************************************************************
639 SSP0IRQHandler
640         IRQ_to_SYS
641         ldr r0,=SSP0_IRQHandler
642         ldr lr,=SSP0_IRQHandler_end
643         bx r0
644 SSP0_IRQHandler_end:
645         SYS_to_IRQ
646
647 ;*******************************************************************************
648 ;* Function Name  : UART2IRQHandler
649 ;* Description    : This function used to switch to SYS mode before entering
650 ;*                  the UART2_IRQHandler function located in 75x_it.c.
651 ;*                  Then to return to IRQ mode after the UART2_IRQHandler
652 ;*                  function termination.
653 ;* Input          : none
654 ;* Output         : none
655 ;*******************************************************************************
656 UART2IRQHandler
657         IRQ_to_SYS
658         ldr r0,=UART2_IRQHandler
659         ldr lr,=UART2_IRQHandler_end
660         bx r0
661 UART2_IRQHandler_end:
662         SYS_to_IRQ
663
664 ;*******************************************************************************
665 ;* Function Name  : UART1IRQHandler
666 ;* Description    : This function used to switch to SYS mode before entering
667 ;*                  the UART1_IRQHandler function located in 75x_it.c.
668 ;*                  Then to return to IRQ mode after the UART1_IRQHandler
669 ;*                  function termination.
670 ;* Input          : none
671 ;* Output         : none
672 ;*******************************************************************************
673 UART1IRQHandler
674         IRQ_to_SYS
675         ldr r0,=UART1_IRQHandler
676         ldr lr,=UART1_IRQHandler_end
677         bx r0
678 UART1_IRQHandler_end:
679         SYS_to_IRQ
680
681 ;*******************************************************************************
682 ;* Function Name  : UART0IRQHandler
683 ;* Description    : This function used to switch to SYS mode before entering
684 ;*                  the UART0_IRQHandler function located in 75x_it.c.
685 ;*                  Then to return to IRQ mode after the UART0_IRQHandler
686 ;*                  function termination.
687 ;* Input          : none
688 ;* Output         : none
689 ;*******************************************************************************
690 UART0IRQHandler
691         IRQ_to_SYS
692         ldr r0,=UART0_IRQHandler
693         ldr lr,=UART0_IRQHandler_end
694         bx r0
695 UART0_IRQHandler_end:
696         SYS_to_IRQ
697
698 ;*******************************************************************************
699 ;* Function Name  : CANIRQHandler
700 ;* Description    : This function used to switch to SYS mode before entering
701 ;*                  the CAN_IRQHandler function located in 75x_it.c.
702 ;*                  Then to return to IRQ mode after the CAN_IRQHandler function
703 ;*                  termination.
704 ;* Input          : none
705 ;* Output         : none
706 ;*******************************************************************************
707 CANIRQHandler
708         IRQ_to_SYS
709         ldr r0,=CAN_IRQHandler
710         ldr lr,=CAN_IRQHandler_end
711         bx r0
712 CAN_IRQHandler_end:
713         SYS_to_IRQ
714
715 ;*******************************************************************************
716 ;* Function Name  : USB_LPIRQHandler
717 ;* Description    : This function used to switch to SYS mode before entering
718 ;*                  the USB_LP_IRQHandler function located in 75x_it.c.
719 ;*                  Then to return to IRQ mode after the USB_LP_IRQHandler
720 ;*                  function termination.
721 ;* Input          : none
722 ;* Output         : none
723 ;*******************************************************************************
724 USB_LPIRQHandler
725         IRQ_to_SYS
726         ldr r0,=USB_LP_IRQHandler
727         ldr lr,=USB_LP_IRQHandler_end
728         bx r0
729 USB_LP_IRQHandler_end:
730         SYS_to_IRQ
731
732 ;*******************************************************************************
733 ;* Function Name  : USB_HPIRQHandler
734 ;* Description    : This function used to switch to SYS mode before entering
735 ;*                  the USB_HP_IRQHandler function located in 75x_it.c.
736 ;*                  Then to return to IRQ mode after the USB_HP_IRQHandler
737 ;*                  function termination.
738 ;* Input          : none
739 ;* Output         : none
740 ;*******************************************************************************
741 USB_HPIRQHandler
742         IRQ_to_SYS
743         ldr r0,=USB_HP_IRQHandler
744         ldr lr,=USB_HP_IRQHandler_end
745         bx r0
746 USB_HP_IRQHandler_end:
747         SYS_to_IRQ
748
749 ;*******************************************************************************
750 ;* Function Name  : ADCIRQHandler
751 ;* Description    : This function used to switch to SYS mode before entering
752 ;*                  the ADC_IRQHandler function located in 75x_it.c.
753 ;*                  Then to return to IRQ mode after the ADC_IRQHandler
754 ;*                  function termination.
755 ;* Input          : none
756 ;* Output         : none
757 ;*******************************************************************************
758 ADCIRQHandler
759         IRQ_to_SYS
760         ldr r0,=ADC_IRQHandler
761         ldr lr,=ADC_IRQHandler_end
762         bx r0
763 ADC_IRQHandler_end:
764         SYS_to_IRQ
765
766 ;*******************************************************************************
767 ;* Function Name  : DMAIRQHandler
768 ;* Description    : This function used to switch to SYS mode before entering
769 ;*                  the DMA_IRQHandler function located in 75x_it.c.
770 ;*                  Then to return to IRQ mode after the DMA_IRQHandler
771 ;*                  function termination.
772 ;* Input          : none
773 ;* Output         : none
774 ;*******************************************************************************
775 DMAIRQHandler
776         IRQ_to_SYS
777         ldr r0,=DMA_IRQHandler
778         ldr lr,=DMA_IRQHandler_end
779         bx r0
780 DMA_IRQHandler_end:
781         SYS_to_IRQ
782
783 ;*******************************************************************************
784 ;* Function Name  : EXTITIRQHandler
785 ;* Description    : This function used to switch to SYS mode before entering
786 ;*                  the EXTIT_IRQHandler function located in 75x_it.c.
787 ;*                  Then to return to IRQ mode after the EXTIT_IRQHandler
788 ;*                  function termination.
789 ;* Input          : none
790 ;* Output         : none
791 ;*******************************************************************************
792 EXTITIRQHandler
793         IRQ_to_SYS
794         ldr r0,=EXTIT_IRQHandler
795         ldr lr,=EXTIT_IRQHandler_end
796         bx r0
797 EXTIT_IRQHandler_end:
798         SYS_to_IRQ
799
800 ;*******************************************************************************
801 ;* Function Name  : MRCCIRQHandler
802 ;* Description    : This function used to switch to SYS mode before entering
803 ;*                  the MRCC_IRQHandler function located in 75x_it.c.
804 ;*                  Then to return to IRQ mode after the MRCC_IRQHandler
805 ;*                  function termination.
806 ;* Input          : none
807 ;* Output         : none
808 ;*******************************************************************************
809 MRCCIRQHandler
810         IRQ_to_SYS
811         ldr r0,=MRCC_IRQHandler
812         ldr lr,=MRCC_IRQHandler_end
813         bx r0
814 MRCC_IRQHandler_end:
815         SYS_to_IRQ
816
817 ;*******************************************************************************
818 ;* Function Name  : FLASHSMIIRQHandler
819 ;* Description    : This function used to switch to SYS mode before entering
820 ;*                  the FLASHSMI_IRQHandler function located in 75x_it.c.
821 ;*                  Then to return to IRQ mode after the FLASHSMI_IRQHandler
822 ;*                  function termination.
823 ;* Input          : none
824 ;* Output         : none
825 ;*******************************************************************************
826 FLASHSMIIRQHandler
827         IRQ_to_SYS
828         ldr r0,=FLASHSMI_IRQHandler
829         ldr lr,=FLASHSMI_IRQHandler_end
830         bx r0
831 FLASHSMI_IRQHandler_end:
832         SYS_to_IRQ
833
834 ;*******************************************************************************
835 ;* Function Name  : RTCIRQHandler
836 ;* Description    : This function used to switch to SYS mode before entering
837 ;*                  the RTC_IRQHandler function located in 75x_it.c.
838 ;*                  Then to return to IRQ mode after the RTC_IRQHandler function
839 ;*                  termination.
840 ;* Input          : none
841 ;* Output         : none
842 ;*******************************************************************************
843 RTCIRQHandler
844         IRQ_to_SYS
845         ldr r0,=RTC_IRQHandler
846         ldr lr,=RTC_IRQHandler_end
847         bx r0
848 RTC_IRQHandler_end:
849         SYS_to_IRQ
850
851 ;*******************************************************************************
852 ;* Function Name  : TBIRQHandler
853 ;* Description    : This function used to switch to SYS mode before entering
854 ;*                  the TB_IRQHandler function located in 75x_it.c.
855 ;*                  Then to return to IRQ mode after the TB_IRQHandler function
856 ;*                  termination.
857 ;* Input          : none
858 ;* Output         : none
859 ;*******************************************************************************
860 TBIRQHandler
861         IRQ_to_SYS
862         ldr r0,=TB_IRQHandler
863         ldr lr,=TB_IRQHandler_end
864         bx r0
865 TB_IRQHandler_end:
866         SYS_to_IRQ
867
868        LTORG
869
870         END
871 ;******************* (C) COPYRIGHT 2006 STMicroelectronics *****END OF FILE*****
872
873
874
875
876
877
878
879
880
881
882