1 /*******************************************************************************
\r
2 * (c) Copyright 2012-2013 Microsemi SoC Products Group. All rights reserved.
\r
4 * SmartFusion2 vector table and startup code for CodeSourcery G++.
\r
6 * SVN $Revision: 5269 $
\r
7 * SVN $Date: 2013-03-21 20:53:38 +0000 (Thu, 21 Mar 2013) $
\r
15 /*==============================================================================
\r
18 .global g_pfnVectors
\r
19 .section .isr_vector,"a",%progbits
\r
20 .type g_pfnVectors, %object
\r
21 .size g_pfnVectors, .-g_pfnVectors
\r
27 .word HardFault_Handler
\r
28 .word MemManage_Handler
\r
29 .word BusFault_Handler
\r
30 .word UsageFault_Handler
\r
36 .word DebugMon_Handler
\r
38 .word PendSV_Handler
\r
39 .word SysTick_Handler
\r
40 .word WdogWakeup_IRQHandler
\r
41 .word RTC_Wakeup_IRQHandler
\r
42 .word SPI0_IRQHandler
\r
43 .word SPI1_IRQHandler
\r
44 .word I2C0_IRQHandler
\r
45 .word I2C0_SMBAlert_IRQHandler
\r
46 .word I2C0_SMBus_IRQHandler
\r
47 .word I2C1_IRQHandler
\r
48 .word I2C1_SMBAlert_IRQHandler
\r
49 .word I2C1_SMBus_IRQHandler
\r
50 .word UART0_IRQHandler
\r
51 .word UART1_IRQHandler
\r
52 .word EthernetMAC_IRQHandler
\r
53 .word DMA_IRQHandler
\r
54 .word Timer1_IRQHandler
\r
55 .word Timer2_IRQHandler
\r
56 .word CAN_IRQHandler
\r
57 .word ENVM0_IRQHandler
\r
58 .word ENVM1_IRQHandler
\r
59 .word ComBlk_IRQHandler
\r
60 .word USB_IRQHandler
\r
61 .word USB_DMA_IRQHandler
\r
62 .word PLL_Lock_IRQHandler
\r
63 .word PLL_LockLost_IRQHandler
\r
64 .word CommSwitchError_IRQHandler
\r
65 .word CacheError_IRQHandler
\r
66 .word DDR_IRQHandler
\r
67 .word HPDMA_Complete_IRQHandler
\r
68 .word HPDMA_Error_IRQHandler
\r
69 .word ECC_Error_IRQHandler
\r
70 .word MDDR_IOCalib_IRQHandler
\r
71 .word FAB_PLL_Lock_IRQHandler
\r
72 .word FAB_PLL_LockLost_IRQHandler
\r
73 .word FIC64_IRQHandler
\r
74 .word FabricIrq0_IRQHandler
\r
75 .word FabricIrq1_IRQHandler
\r
76 .word FabricIrq2_IRQHandler
\r
77 .word FabricIrq3_IRQHandler
\r
78 .word FabricIrq4_IRQHandler
\r
79 .word FabricIrq5_IRQHandler
\r
80 .word FabricIrq6_IRQHandler
\r
81 .word FabricIrq7_IRQHandler
\r
82 .word FabricIrq8_IRQHandler
\r
83 .word FabricIrq9_IRQHandler
\r
84 .word FabricIrq10_IRQHandler
\r
85 .word FabricIrq11_IRQHandler
\r
86 .word FabricIrq12_IRQHandler
\r
87 .word FabricIrq13_IRQHandler
\r
88 .word FabricIrq14_IRQHandler
\r
89 .word FabricIrq15_IRQHandler
\r
90 .word GPIO0_IRQHandler
\r
91 .word GPIO1_IRQHandler
\r
92 .word GPIO2_IRQHandler
\r
93 .word GPIO3_IRQHandler
\r
94 .word GPIO4_IRQHandler
\r
95 .word GPIO5_IRQHandler
\r
96 .word GPIO6_IRQHandler
\r
97 .word GPIO7_IRQHandler
\r
98 .word GPIO8_IRQHandler
\r
99 .word GPIO9_IRQHandler
\r
100 .word GPIO10_IRQHandler
\r
101 .word GPIO11_IRQHandler
\r
102 .word GPIO12_IRQHandler
\r
103 .word GPIO13_IRQHandler
\r
104 .word GPIO14_IRQHandler
\r
105 .word GPIO15_IRQHandler
\r
106 .word GPIO16_IRQHandler
\r
107 .word GPIO17_IRQHandler
\r
108 .word GPIO18_IRQHandler
\r
109 .word GPIO19_IRQHandler
\r
110 .word GPIO20_IRQHandler
\r
111 .word GPIO21_IRQHandler
\r
112 .word GPIO22_IRQHandler
\r
113 .word GPIO23_IRQHandler
\r
114 .word GPIO24_IRQHandler
\r
115 .word GPIO25_IRQHandler
\r
116 .word GPIO26_IRQHandler
\r
117 .word GPIO27_IRQHandler
\r
118 .word GPIO28_IRQHandler
\r
119 .word GPIO29_IRQHandler
\r
120 .word GPIO30_IRQHandler
\r
121 .word GPIO31_IRQHandler
\r
124 /*==============================================================================
\r
127 .global Reset_Handler
\r
128 .type Reset_Handler, %function
\r
131 /*------------------------------------------------------------------------------
\r
132 * Call CMSIS system init function.
\r
134 ldr r0, =SystemInit
\r
137 /*------------------------------------------------------------------------------
\r
138 * Check if the executable is built for NVM LMA mirrored to VMA address.
\r
139 * This is done for debugging executables running out of eNVM with SoftConsole.
\r
140 * The .text section should not be copied in this case since both the LMA and
\r
141 * VMA point at the eNVM despite the LMA and VMa having different values.
\r
143 ldr r0, =__mirrored_nvm
\r
147 /*------------------------------------------------------------------------------
\r
148 * Copy code section.
\r
150 ldr r0, =__text_load
\r
151 ldr r1, =__text_start
\r
162 /*------------------------------------------------------------------------------
\r
163 * Copy data section.
\r
166 ldr r0, =__data_load
\r
167 ldr r1, =__data_start
\r
178 /*------------------------------------------------------------------------------
\r
183 ldr r1, =__bss_start__
\r
184 ldr r2, =__bss_end__
\r
191 /*------------------------------------------------------------------------------
\r
192 * Call global constructors
\r
195 * Align to word and use 32-bits LDR instruction to ensure the ADD instruction
\r
196 * taking PC as argument is aligned on a word boundary.
\r
200 ldr.w r0, =__libc_init_array
\r
204 /*------------------------------------------------------------------------------
\r
208 mov r0, #0 /* no arguments */
\r
209 mov r1, #0 /* no argv either */
\r
215 /*==============================================================================
\r
219 .type NMI_Handler, %function
\r
223 /*==============================================================================
\r
224 * HardFault_Handler
\r
226 .weak HardFault_Handler
\r
227 .type HardFault_Handler, %function
\r
231 /*==============================================================================
\r
232 * MemManage_Handler
\r
234 .weak MemManage_Handler
\r
235 .type MemManage_Handler, %function
\r
239 /*==============================================================================
\r
242 .weak BusFault_Handler
\r
243 .type BusFault_Handler, %function
\r
247 /*==============================================================================
\r
248 * UsageFault_Handler
\r
250 .weak UsageFault_Handler
\r
251 .type UsageFault_Handler, %function
\r
252 UsageFault_Handler:
\r
255 /*==============================================================================
\r
259 .type SVC_Handler, %function
\r
263 /*==============================================================================
\r
266 .weak DebugMon_Handler
\r
267 .type DebugMon_Handler, %function
\r
271 /*==============================================================================
\r
274 .weak PendSV_Handler
\r
275 .type PendSV_Handler, %function
\r
279 /*==============================================================================
\r
282 .weak SysTick_Handler
\r
283 .type SysTick_Handler, %function
\r
287 /*==============================================================================
\r
288 * WdogWakeup_IRQHandler
\r
290 .weak WdogWakeup_IRQHandler
\r
291 .type WdogWakeup_IRQHandler, %function
\r
292 WdogWakeup_IRQHandler:
\r
295 /*==============================================================================
\r
296 * RTC_Wakeup_IRQHandler
\r
298 .weak RTC_Wakeup_IRQHandler
\r
299 .type RTC_Wakeup_IRQHandler, %function
\r
300 RTC_Wakeup_IRQHandler:
\r
303 /*==============================================================================
\r
306 .weak SPI0_IRQHandler
\r
307 .type SPI0_IRQHandler, %function
\r
311 /*==============================================================================
\r
314 .weak SPI1_IRQHandler
\r
315 .type SPI1_IRQHandler, %function
\r
319 /*==============================================================================
\r
322 .weak I2C0_IRQHandler
\r
323 .type I2C0_IRQHandler, %function
\r
327 /*==============================================================================
\r
328 * I2C0_SMBAlert_IRQHandler
\r
330 .weak I2C0_SMBAlert_IRQHandler
\r
331 .type I2C0_SMBAlert_IRQHandler, %function
\r
332 I2C0_SMBAlert_IRQHandler:
\r
335 /*==============================================================================
\r
336 * I2C0_SMBus_IRQHandler
\r
338 .weak I2C0_SMBus_IRQHandler
\r
339 .type I2C0_SMBus_IRQHandler, %function
\r
340 I2C0_SMBus_IRQHandler:
\r
343 /*==============================================================================
\r
346 .weak I2C1_IRQHandler
\r
347 .type I2C1_IRQHandler, %function
\r
351 /*==============================================================================
\r
352 * I2C1_SMBAlert_IRQHandler
\r
354 .weak I2C1_SMBAlert_IRQHandler
\r
355 .type I2C1_SMBAlert_IRQHandler, %function
\r
356 I2C1_SMBAlert_IRQHandler:
\r
359 /*==============================================================================
\r
360 * I2C1_SMBus_IRQHandler
\r
362 .weak I2C1_SMBus_IRQHandler
\r
363 .type I2C1_SMBus_IRQHandler, %function
\r
364 I2C1_SMBus_IRQHandler:
\r
367 /*==============================================================================
\r
370 .weak UART0_IRQHandler
\r
371 .type UART0_IRQHandler, %function
\r
375 /*==============================================================================
\r
378 .weak UART1_IRQHandler
\r
379 .type UART1_IRQHandler, %function
\r
383 /*==============================================================================
\r
384 * EthernetMAC_IRQHandler
\r
386 .weak EthernetMAC_IRQHandler
\r
387 .type EthernetMAC_IRQHandler, %function
\r
388 EthernetMAC_IRQHandler:
\r
391 /*==============================================================================
\r
394 .weak DMA_IRQHandler
\r
395 .type DMA_IRQHandler, %function
\r
399 /*==============================================================================
\r
400 * Timer1_IRQHandler
\r
402 .weak Timer1_IRQHandler
\r
403 .type Timer1_IRQHandler, %function
\r
407 /*==============================================================================
\r
408 * Timer2_IRQHandler
\r
410 .weak Timer2_IRQHandler
\r
411 .type Timer2_IRQHandler, %function
\r
415 /*==============================================================================
\r
418 .weak CAN_IRQHandler
\r
419 .type CAN_IRQHandler, %function
\r
423 /*==============================================================================
\r
426 .weak ENVM0_IRQHandler
\r
427 .type ENVM0_IRQHandler, %function
\r
431 /*==============================================================================
\r
434 .weak ENVM1_IRQHandler
\r
435 .type ENVM1_IRQHandler, %function
\r
439 /*==============================================================================
\r
440 * ComBlk_IRQHandler
\r
442 .weak ComBlk_IRQHandler
\r
443 .type ComBlk_IRQHandler, %function
\r
447 /*==============================================================================
\r
450 .weak USB_IRQHandler
\r
451 .type USB_IRQHandler, %function
\r
455 /*==============================================================================
\r
456 * USB_DMA_IRQHandler
\r
458 .weak USB_DMA_IRQHandler
\r
459 .type USB_DMA_IRQHandler, %function
\r
460 USB_DMA_IRQHandler:
\r
463 /*==============================================================================
\r
464 * PLL_Lock_IRQHandler
\r
466 .weak PLL_Lock_IRQHandler
\r
467 .type PLL_Lock_IRQHandler, %function
\r
468 PLL_Lock_IRQHandler:
\r
471 /*==============================================================================
\r
472 * PLL_LockLost_IRQHandler
\r
474 .weak PLL_LockLost_IRQHandler
\r
475 .type PLL_LockLost_IRQHandler, %function
\r
476 PLL_LockLost_IRQHandler:
\r
479 /*==============================================================================
\r
480 * CommSwitchError_IRQHandler
\r
482 .weak CommSwitchError_IRQHandler
\r
483 .type CommSwitchError_IRQHandler, %function
\r
484 CommSwitchError_IRQHandler:
\r
487 /*==============================================================================
\r
488 * CacheError_IRQHandler
\r
490 .weak CacheError_IRQHandler
\r
491 .type CacheError_IRQHandler, %function
\r
492 CacheError_IRQHandler:
\r
495 /*==============================================================================
\r
498 .weak DDR_IRQHandler
\r
499 .type DDR_IRQHandler, %function
\r
503 /*==============================================================================
\r
504 * HPDMA_Complete_IRQHandler
\r
506 .weak HPDMA_Complete_IRQHandler
\r
507 .type HPDMA_Complete_IRQHandler, %function
\r
508 HPDMA_Complete_IRQHandler:
\r
511 /*==============================================================================
\r
512 * HPDMA_Error_IRQHandler
\r
514 .weak HPDMA_Error_IRQHandler
\r
515 .type HPDMA_Error_IRQHandler, %function
\r
516 HPDMA_Error_IRQHandler:
\r
519 /*==============================================================================
\r
520 * ECC_Error_IRQHandler
\r
522 .weak ECC_Error_IRQHandler
\r
523 .type ECC_Error_IRQHandler, %function
\r
524 ECC_Error_IRQHandler:
\r
527 /*==============================================================================
\r
528 * MDDR_IOCalib_IRQHandler
\r
530 .weak MDDR_IOCalib_IRQHandler
\r
531 .type MDDR_IOCalib_IRQHandler, %function
\r
532 MDDR_IOCalib_IRQHandler:
\r
535 /*==============================================================================
\r
536 * FAB_PLL_Lock_IRQHandler
\r
538 .weak FAB_PLL_Lock_IRQHandler
\r
539 .type FAB_PLL_Lock_IRQHandler, %function
\r
540 FAB_PLL_Lock_IRQHandler:
\r
543 /*==============================================================================
\r
544 * FAB_PLL_LockLost_IRQHandler
\r
546 .weak FAB_PLL_LockLost_IRQHandler
\r
547 .type FAB_PLL_LockLost_IRQHandler, %function
\r
548 FAB_PLL_LockLost_IRQHandler:
\r
551 /*==============================================================================
\r
554 .weak FIC64_IRQHandler
\r
555 .type FIC64_IRQHandler, %function
\r
559 /*==============================================================================
\r
560 * FabricIrq0_IRQHandler
\r
562 .weak FabricIrq0_IRQHandler
\r
563 .type FabricIrq0_IRQHandler, %function
\r
564 FabricIrq0_IRQHandler:
\r
567 /*==============================================================================
\r
568 * FabricIrq1_IRQHandler
\r
570 .weak FabricIrq1_IRQHandler
\r
571 .type FabricIrq1_IRQHandler, %function
\r
572 FabricIrq1_IRQHandler:
\r
575 /*==============================================================================
\r
576 * FabricIrq2_IRQHandler
\r
578 .weak FabricIrq2_IRQHandler
\r
579 .type FabricIrq2_IRQHandler, %function
\r
580 FabricIrq2_IRQHandler:
\r
583 /*==============================================================================
\r
584 * FabricIrq3_IRQHandler
\r
586 .weak FabricIrq3_IRQHandler
\r
587 .type FabricIrq3_IRQHandler, %function
\r
588 FabricIrq3_IRQHandler:
\r
591 /*==============================================================================
\r
592 * FabricIrq4_IRQHandler
\r
594 .weak FabricIrq4_IRQHandler
\r
595 .type FabricIrq4_IRQHandler, %function
\r
596 FabricIrq4_IRQHandler:
\r
599 /*==============================================================================
\r
600 * FabricIrq5_IRQHandler
\r
602 .weak FabricIrq5_IRQHandler
\r
603 .type FabricIrq5_IRQHandler, %function
\r
604 FabricIrq5_IRQHandler:
\r
607 /*==============================================================================
\r
608 * FabricIrq6_IRQHandler
\r
610 .weak FabricIrq6_IRQHandler
\r
611 .type FabricIrq6_IRQHandler, %function
\r
612 FabricIrq6_IRQHandler:
\r
615 /*==============================================================================
\r
616 * FabricIrq7_IRQHandler
\r
618 .weak FabricIrq7_IRQHandler
\r
619 .type FabricIrq7_IRQHandler, %function
\r
620 FabricIrq7_IRQHandler:
\r
623 /*==============================================================================
\r
624 * FabricIrq8_IRQHandler
\r
626 .weak FabricIrq8_IRQHandler
\r
627 .type FabricIrq8_IRQHandler, %function
\r
628 FabricIrq8_IRQHandler:
\r
631 /*==============================================================================
\r
632 * FabricIrq9_IRQHandler
\r
634 .weak FabricIrq9_IRQHandler
\r
635 .type FabricIrq9_IRQHandler, %function
\r
636 FabricIrq9_IRQHandler:
\r
639 /*==============================================================================
\r
640 * FabricIrq10_IRQHandler
\r
642 .weak FabricIrq10_IRQHandler
\r
643 .type FabricIrq10_IRQHandler, %function
\r
644 FabricIrq10_IRQHandler:
\r
647 /*==============================================================================
\r
648 * FabricIrq11_IRQHandler
\r
650 .weak FabricIrq11_IRQHandler
\r
651 .type FabricIrq11_IRQHandler, %function
\r
652 FabricIrq11_IRQHandler:
\r
655 /*==============================================================================
\r
656 * FabricIrq12_IRQHandler
\r
658 .weak FabricIrq12_IRQHandler
\r
659 .type FabricIrq12_IRQHandler, %function
\r
660 FabricIrq12_IRQHandler:
\r
663 /*==============================================================================
\r
664 * FabricIrq13_IRQHandler
\r
666 .weak FabricIrq13_IRQHandler
\r
667 .type FabricIrq13_IRQHandler, %function
\r
668 FabricIrq13_IRQHandler:
\r
671 /*==============================================================================
\r
672 * FabricIrq14_IRQHandler
\r
674 .weak FabricIrq14_IRQHandler
\r
675 .type FabricIrq14_IRQHandler, %function
\r
676 FabricIrq14_IRQHandler:
\r
679 /*==============================================================================
\r
680 * FabricIrq15_IRQHandler
\r
682 .weak FabricIrq15_IRQHandler
\r
683 .type FabricIrq15_IRQHandler, %function
\r
684 FabricIrq15_IRQHandler:
\r
687 /*==============================================================================
\r
690 .weak GPIO0_IRQHandler
\r
691 .type GPIO0_IRQHandler, %function
\r
695 /*==============================================================================
\r
698 .weak GPIO1_IRQHandler
\r
699 .type GPIO1_IRQHandler, %function
\r
703 /*==============================================================================
\r
706 .weak GPIO2_IRQHandler
\r
707 .type GPIO2_IRQHandler, %function
\r
711 /*==============================================================================
\r
714 .weak GPIO3_IRQHandler
\r
715 .type GPIO3_IRQHandler, %function
\r
719 /*==============================================================================
\r
722 .weak GPIO4_IRQHandler
\r
723 .type GPIO4_IRQHandler, %function
\r
727 /*==============================================================================
\r
730 .weak GPIO5_IRQHandler
\r
731 .type GPIO5_IRQHandler, %function
\r
735 /*==============================================================================
\r
738 .weak GPIO6_IRQHandler
\r
739 .type GPIO6_IRQHandler, %function
\r
743 /*==============================================================================
\r
746 .weak GPIO7_IRQHandler
\r
747 .type GPIO7_IRQHandler, %function
\r
751 /*==============================================================================
\r
754 .weak GPIO8_IRQHandler
\r
755 .type GPIO8_IRQHandler, %function
\r
759 /*==============================================================================
\r
762 .weak GPIO9_IRQHandler
\r
763 .type GPIO9_IRQHandler, %function
\r
767 /*==============================================================================
\r
768 * GPIO10_IRQHandler
\r
770 .weak GPIO10_IRQHandler
\r
771 .type GPIO10_IRQHandler, %function
\r
775 /*==============================================================================
\r
776 * GPIO11_IRQHandler
\r
778 .weak GPIO11_IRQHandler
\r
779 .type GPIO11_IRQHandler, %function
\r
783 /*==============================================================================
\r
784 * GPIO12_IRQHandler
\r
786 .weak GPIO12_IRQHandler
\r
787 .type GPIO12_IRQHandler, %function
\r
791 /*==============================================================================
\r
792 * GPIO13_IRQHandler
\r
794 .weak GPIO13_IRQHandler
\r
795 .type GPIO13_IRQHandler, %function
\r
799 /*==============================================================================
\r
800 * GPIO14_IRQHandler
\r
802 .weak GPIO14_IRQHandler
\r
803 .type GPIO14_IRQHandler, %function
\r
807 /*==============================================================================
\r
808 * GPIO15_IRQHandler
\r
810 .weak GPIO15_IRQHandler
\r
811 .type GPIO15_IRQHandler, %function
\r
815 /*==============================================================================
\r
816 * GPIO16_IRQHandler
\r
818 .weak GPIO16_IRQHandler
\r
819 .type GPIO16_IRQHandler, %function
\r
823 /*==============================================================================
\r
824 * GPIO17_IRQHandler
\r
826 .weak GPIO17_IRQHandler
\r
827 .type GPIO17_IRQHandler, %function
\r
831 /*==============================================================================
\r
832 * GPIO18_IRQHandler
\r
834 .weak GPIO18_IRQHandler
\r
835 .type GPIO18_IRQHandler, %function
\r
839 /*==============================================================================
\r
840 * GPIO19_IRQHandler
\r
842 .weak GPIO19_IRQHandler
\r
843 .type GPIO19_IRQHandler, %function
\r
847 /*==============================================================================
\r
848 * GPIO20_IRQHandler
\r
850 .weak GPIO20_IRQHandler
\r
851 .type GPIO20_IRQHandler, %function
\r
855 /*==============================================================================
\r
856 * GPIO21_IRQHandler
\r
858 .weak GPIO21_IRQHandler
\r
859 .type GPIO21_IRQHandler, %function
\r
863 /*==============================================================================
\r
864 * GPIO22_IRQHandler
\r
866 .weak GPIO22_IRQHandler
\r
867 .type GPIO22_IRQHandler, %function
\r
871 /*==============================================================================
\r
872 * GPIO23_IRQHandler
\r
874 .weak GPIO23_IRQHandler
\r
875 .type GPIO23_IRQHandler, %function
\r
879 /*==============================================================================
\r
880 * GPIO24_IRQHandler
\r
882 .weak GPIO24_IRQHandler
\r
883 .type GPIO24_IRQHandler, %function
\r
887 /*==============================================================================
\r
888 * GPIO25_IRQHandler
\r
890 .weak GPIO25_IRQHandler
\r
891 .type GPIO25_IRQHandler, %function
\r
895 /*==============================================================================
\r
896 * GPIO26_IRQHandler
\r
898 .weak GPIO26_IRQHandler
\r
899 .type GPIO26_IRQHandler, %function
\r
903 /*==============================================================================
\r
904 * GPIO27_IRQHandler
\r
906 .weak GPIO27_IRQHandler
\r
907 .type GPIO27_IRQHandler, %function
\r
911 /*==============================================================================
\r
912 * GPIO28_IRQHandler
\r
914 .weak GPIO28_IRQHandler
\r
915 .type GPIO28_IRQHandler, %function
\r
919 /*==============================================================================
\r
920 * GPIO29_IRQHandler
\r
922 .weak GPIO29_IRQHandler
\r
923 .type GPIO29_IRQHandler, %function
\r
927 /*==============================================================================
\r
928 * GPIO30_IRQHandler
\r
930 .weak GPIO30_IRQHandler
\r
931 .type GPIO30_IRQHandler, %function
\r
935 /*==============================================================================
\r
936 * GPIO31_IRQHandler
\r
938 .weak GPIO31_IRQHandler
\r
939 .type GPIO31_IRQHandler, %function
\r
943 /*==============================================================================
\r
944 * mscc_post_hw_cfg_init
\r
946 .weak mscc_post_hw_cfg_init
\r
947 .type mscc_post_hw_cfg_init, %function
\r
948 mscc_post_hw_cfg_init:
\r