mbed official / mbed-src

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Committer:
mbed_official
Date:
Mon Jun 01 11:00:11 2015 +0100
Revision:
554:edd95c0879f8
Synchronized with git revision 7a1d25e3dfbe5bc1457774d4af3c73383a0ff81d

Full URL: https://github.com/mbedmicro/mbed/commit/7a1d25e3dfbe5bc1457774d4af3c73383a0ff81d/

Silicon Labs - Initial test framework pin definitions for EFM32 platforms

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 554:edd95c0879f8 1 /* .include "vector_defns.h" */
mbed_official 554:edd95c0879f8 2
mbed_official 554:edd95c0879f8 3
mbed_official 554:edd95c0879f8 4
mbed_official 554:edd95c0879f8 5 .section .privileged_code, "ax"
mbed_official 554:edd95c0879f8 6 .arm
mbed_official 554:edd95c0879f8 7
mbed_official 554:edd95c0879f8 8
mbed_official 554:edd95c0879f8 9 .weak __mbed_fiq
mbed_official 554:edd95c0879f8 10 .weak __mbed_undef
mbed_official 554:edd95c0879f8 11 .weak __mbed_prefetch_abort
mbed_official 554:edd95c0879f8 12 .weak __mbed_data_abort
mbed_official 554:edd95c0879f8 13 .weak __mbed_irq
mbed_official 554:edd95c0879f8 14 .weak __mbed_swi
mbed_official 554:edd95c0879f8 15 .weak __mbed_dcc_irq
mbed_official 554:edd95c0879f8 16 .weak __mbed_reset
mbed_official 554:edd95c0879f8 17 .global __mbed_init_realmonitor
mbed_official 554:edd95c0879f8 18 .weak SVC_Handler
mbed_official 554:edd95c0879f8 19 .weak IRQ_Handler
mbed_official 554:edd95c0879f8 20 /* .global __mbed_init */
mbed_official 554:edd95c0879f8 21
mbed_official 554:edd95c0879f8 22
mbed_official 554:edd95c0879f8 23
mbed_official 554:edd95c0879f8 24
mbed_official 554:edd95c0879f8 25 __mbed_fiq:
mbed_official 554:edd95c0879f8 26 B __mbed_fiq
mbed_official 554:edd95c0879f8 27 __mbed_undef:
mbed_official 554:edd95c0879f8 28 LDR PC, =0x7fffffa0
mbed_official 554:edd95c0879f8 29 __mbed_prefetch_abort:
mbed_official 554:edd95c0879f8 30 LDR PC, =0x7fffffb0
mbed_official 554:edd95c0879f8 31 __mbed_data_abort:
mbed_official 554:edd95c0879f8 32 LDR PC, =0x7fffffc0
mbed_official 554:edd95c0879f8 33 __mbed_irq:
mbed_official 554:edd95c0879f8 34 /*
mbed_official 554:edd95c0879f8 35 If RTOS is enabled then goto RTOS IRQ handler
mbed_official 554:edd95c0879f8 36 */
mbed_official 554:edd95c0879f8 37 PUSH {R0}
mbed_official 554:edd95c0879f8 38 LDR R0, =IRQ_Handler
mbed_official 554:edd95c0879f8 39 CMP R0, #0
mbed_official 554:edd95c0879f8 40 POP {R0}
mbed_official 554:edd95c0879f8 41 BNE IRQ_Handler
mbed_official 554:edd95c0879f8 42 /*
mbed_official 554:edd95c0879f8 43 else use CMSIS IRQ handler
mbed_official 554:edd95c0879f8 44 */
mbed_official 554:edd95c0879f8 45 MSR CPSR_c, #0x1F|0x80|0x40
mbed_official 554:edd95c0879f8 46
mbed_official 554:edd95c0879f8 47 STMDB sp!, {r0-r3,r12,lr}
mbed_official 554:edd95c0879f8 48
mbed_official 554:edd95c0879f8 49 MOV r0, #0xFFFFFF00
mbed_official 554:edd95c0879f8 50 LDR r0, [r0]
mbed_official 554:edd95c0879f8 51
mbed_official 554:edd95c0879f8 52 MOV lr, pc
mbed_official 554:edd95c0879f8 53 BX r0
mbed_official 554:edd95c0879f8 54
mbed_official 554:edd95c0879f8 55 MOV r0, #0xFFFFFF00
mbed_official 554:edd95c0879f8 56 STR r0, [r0]
mbed_official 554:edd95c0879f8 57
mbed_official 554:edd95c0879f8 58 LDMFD sp!,{r0-r3,r12,lr}
mbed_official 554:edd95c0879f8 59
mbed_official 554:edd95c0879f8 60 MSR CPSR_c, #0x12|0x80|0x40
mbed_official 554:edd95c0879f8 61
mbed_official 554:edd95c0879f8 62 SUBS pc, lr, #4
mbed_official 554:edd95c0879f8 63
mbed_official 554:edd95c0879f8 64 __mbed_swi:
mbed_official 554:edd95c0879f8 65 /*
mbed_official 554:edd95c0879f8 66 If RTOS is enabled then goto RTOS SVC handler
mbed_official 554:edd95c0879f8 67 */
mbed_official 554:edd95c0879f8 68 PUSH {R0}
mbed_official 554:edd95c0879f8 69 LDR R0, =SVC_Handler
mbed_official 554:edd95c0879f8 70 CMP R0, #0
mbed_official 554:edd95c0879f8 71 POP {R0}
mbed_official 554:edd95c0879f8 72 BNE SVC_Handler
mbed_official 554:edd95c0879f8 73 /*
mbed_official 554:edd95c0879f8 74 else use CMSIS SVC handler
mbed_official 554:edd95c0879f8 75 */
mbed_official 554:edd95c0879f8 76 STMFD sp!, {a4, r4, ip, lr}
mbed_official 554:edd95c0879f8 77
mbed_official 554:edd95c0879f8 78 LDR r4, =0x40000040
mbed_official 554:edd95c0879f8 79
mbed_official 554:edd95c0879f8 80 LDR a4, =0x00940000
mbed_official 554:edd95c0879f8 81 LDR PC, =0x7ffff820
mbed_official 554:edd95c0879f8 82
mbed_official 554:edd95c0879f8 83 __mbed_dcc_irq:
mbed_official 554:edd95c0879f8 84 LDMFD sp!,{r0-r3,r12,lr}
mbed_official 554:edd95c0879f8 85
mbed_official 554:edd95c0879f8 86 MSR CPSR_c, #0x12|0x80|0x40
mbed_official 554:edd95c0879f8 87
mbed_official 554:edd95c0879f8 88 SUB lr, lr, #4
mbed_official 554:edd95c0879f8 89 STMFD sp!, {ip,lr}
mbed_official 554:edd95c0879f8 90
mbed_official 554:edd95c0879f8 91 LDR LR, =0xfffff000
mbed_official 554:edd95c0879f8 92 STR LR, [LR, #0xf00]
mbed_official 554:edd95c0879f8 93
mbed_official 554:edd95c0879f8 94 LDR PC, =0x7fffffe0
mbed_official 554:edd95c0879f8 95 /*
mbed_official 554:edd95c0879f8 96 __mbed_reset is called after reset
mbed_official 554:edd95c0879f8 97 we setup the stacks and realmonitor, then call Reset_Handler like on M3
mbed_official 554:edd95c0879f8 98 */
mbed_official 554:edd95c0879f8 99
mbed_official 554:edd95c0879f8 100 .section .text, "ax"
mbed_official 554:edd95c0879f8 101 .arm
mbed_official 554:edd95c0879f8 102 .global Reset_handler
mbed_official 554:edd95c0879f8 103 Reset_Handler:
mbed_official 554:edd95c0879f8 104 .extern __libc_init_array
mbed_official 554:edd95c0879f8 105 .extern SystemInit
mbed_official 554:edd95c0879f8 106 .weak software_init_hook
mbed_official 554:edd95c0879f8 107 LDR R0, =SystemInit
mbed_official 554:edd95c0879f8 108 MOV LR, PC
mbed_official 554:edd95c0879f8 109 BX R0
mbed_official 554:edd95c0879f8 110
mbed_official 554:edd95c0879f8 111 /* if (software_init_hook) // give control to the RTOS
mbed_official 554:edd95c0879f8 112 software_init_hook(); // this will also call __libc_init_array
mbed_official 554:edd95c0879f8 113 */
mbed_official 554:edd95c0879f8 114 LDR R0, =software_init_hook
mbed_official 554:edd95c0879f8 115 CMP R0, #0
mbed_official 554:edd95c0879f8 116 BEQ nortos
mbed_official 554:edd95c0879f8 117 ORR R0,R0,#1 /* set thumb address */
mbed_official 554:edd95c0879f8 118 BX R0
mbed_official 554:edd95c0879f8 119 /* else */
mbed_official 554:edd95c0879f8 120 nortos:
mbed_official 554:edd95c0879f8 121 LDR R0, =__libc_init_array
mbed_official 554:edd95c0879f8 122 MOV LR, PC
mbed_official 554:edd95c0879f8 123 BX R0
mbed_official 554:edd95c0879f8 124
mbed_official 554:edd95c0879f8 125 MSR CPSR_c, #0x1F /* enable irq */
mbed_official 554:edd95c0879f8 126
mbed_official 554:edd95c0879f8 127 LDR R0, =main
mbed_official 554:edd95c0879f8 128 BX R0
mbed_official 554:edd95c0879f8 129
mbed_official 554:edd95c0879f8 130 __mbed_reset:
mbed_official 554:edd95c0879f8 131 LDR R0, =( __SRAM_segment_end__ )
mbed_official 554:edd95c0879f8 132
mbed_official 554:edd95c0879f8 133 MSR CPSR_c, #0x1B|0x80|0x40
mbed_official 554:edd95c0879f8 134 MOV SP, R0
mbed_official 554:edd95c0879f8 135 SUB R0, R0, #0x00000040
mbed_official 554:edd95c0879f8 136
mbed_official 554:edd95c0879f8 137 MSR CPSR_c, #0x17|0x80|0x40
mbed_official 554:edd95c0879f8 138 MOV SP, R0
mbed_official 554:edd95c0879f8 139 SUB R0, R0, #0x00000040
mbed_official 554:edd95c0879f8 140
mbed_official 554:edd95c0879f8 141 MSR CPSR_c, #0x11|0x80|0x40
mbed_official 554:edd95c0879f8 142 MOV SP, R0
mbed_official 554:edd95c0879f8 143 SUB R0, R0, #0x00000040
mbed_official 554:edd95c0879f8 144
mbed_official 554:edd95c0879f8 145 MSR CPSR_c, #0x12|0x80|0x40
mbed_official 554:edd95c0879f8 146 MOV SP, R0
mbed_official 554:edd95c0879f8 147 SUB R0, R0, #0x00000040
mbed_official 554:edd95c0879f8 148
mbed_official 554:edd95c0879f8 149 MSR CPSR_c, #0x13|0x80|0x40
mbed_official 554:edd95c0879f8 150 MOV SP, R0
mbed_official 554:edd95c0879f8 151 SUB R0, R0, #0x00000040
mbed_official 554:edd95c0879f8 152
mbed_official 554:edd95c0879f8 153 /*
mbed_official 554:edd95c0879f8 154 MSR CPSR_c, #0x10|0x80|0x40
mbed_official 554:edd95c0879f8 155 MOV SP, R0
mbed_official 554:edd95c0879f8 156 */
mbed_official 554:edd95c0879f8 157 MSR CPSR_c, #0x1F|0x80|0x40
mbed_official 554:edd95c0879f8 158 MOV SP, R0
mbed_official 554:edd95c0879f8 159
mbed_official 554:edd95c0879f8 160 MSR CPSR_c, #0x13|0x80|0x40 /* execute in Supervisor mode */
mbed_official 554:edd95c0879f8 161
mbed_official 554:edd95c0879f8 162 /* Relocate .data section (Copy from ROM to RAM) */
mbed_official 554:edd95c0879f8 163 LDR R1, =__text_end__ /* _etext */
mbed_official 554:edd95c0879f8 164 LDR R2, =__data_start__ /* _data */
mbed_official 554:edd95c0879f8 165 LDR R3, =__data_end__ /* _edata */
mbed_official 554:edd95c0879f8 166 CMP R2, R3
mbed_official 554:edd95c0879f8 167 BEQ DataIsEmpty
mbed_official 554:edd95c0879f8 168 LoopRel: CMP R2, R3
mbed_official 554:edd95c0879f8 169 LDRLO R0, [R1], #4
mbed_official 554:edd95c0879f8 170 STRLO R0, [R2], #4
mbed_official 554:edd95c0879f8 171 BLO LoopRel
mbed_official 554:edd95c0879f8 172 DataIsEmpty:
mbed_official 554:edd95c0879f8 173
mbed_official 554:edd95c0879f8 174 /* Clear .bss section (Zero init) */
mbed_official 554:edd95c0879f8 175 MOV R0, #0
mbed_official 554:edd95c0879f8 176 LDR R1, =__bss_start__
mbed_official 554:edd95c0879f8 177 LDR R2, =__bss_end__
mbed_official 554:edd95c0879f8 178 CMP R1,R2
mbed_official 554:edd95c0879f8 179 BEQ BSSIsEmpty
mbed_official 554:edd95c0879f8 180 LoopZI: CMP R1, R2
mbed_official 554:edd95c0879f8 181 STRLO R0, [R1], #4
mbed_official 554:edd95c0879f8 182 BLO LoopZI
mbed_official 554:edd95c0879f8 183 BSSIsEmpty:
mbed_official 554:edd95c0879f8 184
mbed_official 554:edd95c0879f8 185
mbed_official 554:edd95c0879f8 186 /* Init realmonitor */
mbed_official 554:edd95c0879f8 187 /*
mbed_official 554:edd95c0879f8 188 LDR R0, =__mbed_init_realmonitor
mbed_official 554:edd95c0879f8 189 MOV LR, PC
mbed_official 554:edd95c0879f8 190 BX R0
mbed_official 554:edd95c0879f8 191 */
mbed_official 554:edd95c0879f8 192
mbed_official 554:edd95c0879f8 193 /* Go to Reset_Handler */
mbed_official 554:edd95c0879f8 194 LDR R0, =Reset_Handler
mbed_official 554:edd95c0879f8 195 BX R0