mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Wed Jul 01 08:15:11 2015 +0100
Revision:
577:15494b56c2f3
Parent:
targets/cmsis/TARGET_NXP/TARGET_LPC2460/TOOLCHAIN_GCC_ARM/vector_functions.s@554:edd95c0879f8
Synchronized with git revision 7766e75dd858812cd79aedb3080349715f55dd56

Full URL: https://github.com/mbedmicro/mbed/commit/7766e75dd858812cd79aedb3080349715f55dd56/

GCC asm updates

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