Official mbed Real Time Operating System based on the RTX implementation of the CMSIS-RTOS API open standard.

Dependents:   denki-yohou_b TestY201 Network-RTOS NTPClient_HelloWorld ... more

Deprecated

This is the mbed 2 rtos library. mbed OS 5 integrates the mbed library with mbed-rtos. With this, we have provided thread safety for all mbed APIs. If you'd like to learn about using mbed OS 5, please see the docs.

Committer:
mbed_official
Date:
Wed Jul 01 08:15:48 2015 +0100
Revision:
86:58c3b7759abf
Parent:
rtx/TARGET_ARM7/ARM7/TOOLCHAIN_GCC/HAL_CM0.s@80:2dab120a94c2
Child:
110:7a567bf048bf
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 80:2dab120a94c2 1 /*----------------------------------------------------------------------------
mbed_official 80:2dab120a94c2 2 * RL-ARM - RTX
mbed_official 80:2dab120a94c2 3 *----------------------------------------------------------------------------
mbed_official 80:2dab120a94c2 4 * Name: HAL_CM0.S
mbed_official 80:2dab120a94c2 5 * Purpose: Hardware Abstraction Layer for ARM7TDMI
mbed_official 80:2dab120a94c2 6 * Rev.: V1.0
mbed_official 80:2dab120a94c2 7 *----------------------------------------------------------------------------
mbed_official 80:2dab120a94c2 8 *
mbed_official 80:2dab120a94c2 9 * Copyright (c) 1999-2009 KEIL, 2009-2015 ARM Germany GmbH
mbed_official 80:2dab120a94c2 10 * All rights reserved.
mbed_official 80:2dab120a94c2 11 * Redistribution and use in source and binary forms, with or without
mbed_official 80:2dab120a94c2 12 * modification, are permitted provided that the following conditions are met:
mbed_official 80:2dab120a94c2 13 * - Redistributions of source code must retain the above copyright
mbed_official 80:2dab120a94c2 14 * notice, this list of conditions and the following disclaimer.
mbed_official 80:2dab120a94c2 15 * - Redistributions in binary form must reproduce the above copyright
mbed_official 80:2dab120a94c2 16 * notice, this list of conditions and the following disclaimer in the
mbed_official 80:2dab120a94c2 17 * documentation and/or other materials provided with the distribution.
mbed_official 80:2dab120a94c2 18 * - Neither the name of ARM nor the names of its contributors may be used
mbed_official 80:2dab120a94c2 19 * to endorse or promote products derived from this software without
mbed_official 80:2dab120a94c2 20 * specific prior written permission.
mbed_official 80:2dab120a94c2 21 *
mbed_official 80:2dab120a94c2 22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
mbed_official 80:2dab120a94c2 23 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
mbed_official 80:2dab120a94c2 24 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
mbed_official 80:2dab120a94c2 25 * ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
mbed_official 80:2dab120a94c2 26 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
mbed_official 80:2dab120a94c2 27 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
mbed_official 80:2dab120a94c2 28 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
mbed_official 80:2dab120a94c2 29 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
mbed_official 80:2dab120a94c2 30 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
mbed_official 80:2dab120a94c2 31 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
mbed_official 80:2dab120a94c2 32 * POSSIBILITY OF SUCH DAMAGE.
mbed_official 80:2dab120a94c2 33 *---------------------------------------------------------------------------*/
mbed_official 80:2dab120a94c2 34
mbed_official 80:2dab120a94c2 35 .file "HAL_CM0.S"
mbed_official 80:2dab120a94c2 36 .syntax unified
mbed_official 80:2dab120a94c2 37
mbed_official 80:2dab120a94c2 38 .equ TCB_TSTACK, 40
mbed_official 80:2dab120a94c2 39
mbed_official 80:2dab120a94c2 40
mbed_official 80:2dab120a94c2 41 /*----------------------------------------------------------------------------
mbed_official 80:2dab120a94c2 42 * Functions
mbed_official 80:2dab120a94c2 43 *---------------------------------------------------------------------------*/
mbed_official 80:2dab120a94c2 44
mbed_official 80:2dab120a94c2 45 .arm
mbed_official 80:2dab120a94c2 46
mbed_official 80:2dab120a94c2 47 .section ".text"
mbed_official 80:2dab120a94c2 48 .align 2
mbed_official 80:2dab120a94c2 49
mbed_official 80:2dab120a94c2 50 /*-------------------------- Save Context --------------------------------*/
mbed_official 80:2dab120a94c2 51 /* MUST be called the first */
mbed_official 80:2dab120a94c2 52 .macro SaveContext
mbed_official 80:2dab120a94c2 53
mbed_official 80:2dab120a94c2 54 /* Push R0 as we are going to use the register. */ \
mbed_official 80:2dab120a94c2 55 STMDB SP!, {R0}
mbed_official 80:2dab120a94c2 56
mbed_official 80:2dab120a94c2 57 /* Set R0 to SP(user) */
mbed_official 80:2dab120a94c2 58 STMDB SP,{SP}^
mbed_official 80:2dab120a94c2 59 NOP
mbed_official 80:2dab120a94c2 60 SUB SP, SP, #4
mbed_official 80:2dab120a94c2 61 LDMIA SP!,{R0}
mbed_official 80:2dab120a94c2 62
mbed_official 80:2dab120a94c2 63 /* Push the LR return address onto the user stack. */
mbed_official 80:2dab120a94c2 64 STMDB R0!, {LR}
mbed_official 80:2dab120a94c2 65
mbed_official 80:2dab120a94c2 66 /* Now we have saved LR we can use it instead of R0. */
mbed_official 80:2dab120a94c2 67 MOV LR, R0
mbed_official 80:2dab120a94c2 68
mbed_official 80:2dab120a94c2 69 /* Pop R0 so we can save it onto the system mode stack. */
mbed_official 80:2dab120a94c2 70 LDMIA SP!, {R0}
mbed_official 80:2dab120a94c2 71
mbed_official 80:2dab120a94c2 72 /* Push all the system mode registers onto the task stack. */
mbed_official 80:2dab120a94c2 73 STMDB LR,{R0-R12,LR}^ /* LR can not be changed because user's LR is used*/
mbed_official 80:2dab120a94c2 74 NOP /* pass 1 cycle before changing LR */
mbed_official 80:2dab120a94c2 75 SUB LR, LR, #14*4 /* change LR now -15 dwords (R0-R14)*/
mbed_official 80:2dab120a94c2 76
mbed_official 80:2dab120a94c2 77 /* Push the SPSR onto the task stack. */
mbed_official 80:2dab120a94c2 78 MRS R0, SPSR
mbed_official 80:2dab120a94c2 79 STMDB LR!, {R0}
mbed_official 80:2dab120a94c2 80
mbed_official 80:2dab120a94c2 81 /* Store the new top of stack for the task. */
mbed_official 80:2dab120a94c2 82 LDR R0,=os_tsk
mbed_official 80:2dab120a94c2 83 LDR R0, [R0] /* R0 = (tcb) os_tsk.run */
mbed_official 80:2dab120a94c2 84 STR LR, [R0, TCB_TSTACK] /* tcb.tsk_stack = SP(user) */
mbed_official 80:2dab120a94c2 85 .endm
mbed_official 80:2dab120a94c2 86
mbed_official 80:2dab120a94c2 87 /*-------------------------- Restore Context --------------------------------*/
mbed_official 80:2dab120a94c2 88 .type RestoreContext, %function
mbed_official 80:2dab120a94c2 89 .global RestoreContext
mbed_official 80:2dab120a94c2 90 RestoreContext:
mbed_official 80:2dab120a94c2 91 .fnstart
mbed_official 80:2dab120a94c2 92 .cantunwind
mbed_official 80:2dab120a94c2 93 /* Set the LR to the task stack. */
mbed_official 80:2dab120a94c2 94 LDR R0,=os_tsk
mbed_official 80:2dab120a94c2 95 LDR R1, [R0, 4] /* R1 = (tcb) os_tsk.new */
mbed_official 80:2dab120a94c2 96 STR R1, [R0] /* os_tsk.run = os_tsk_newk */
mbed_official 80:2dab120a94c2 97 LDR LR, [R1, TCB_TSTACK] /* LR = tcb.tsk_stack */
mbed_official 80:2dab120a94c2 98
mbed_official 80:2dab120a94c2 99 /* Get the SPSR from the stack. */
mbed_official 80:2dab120a94c2 100 LDMFD LR!, {R0} /* SPSR */
mbed_official 80:2dab120a94c2 101 MSR SPSR, R0
mbed_official 80:2dab120a94c2 102
mbed_official 80:2dab120a94c2 103 /* Restore all system mode registers for the task. */
mbed_official 80:2dab120a94c2 104 LDMFD LR, {R0-R12,LR}^
mbed_official 80:2dab120a94c2 105 NOP
mbed_official 80:2dab120a94c2 106
mbed_official 80:2dab120a94c2 107 ADD LR, LR, 15*4 /* increase starck pointer */
mbed_official 80:2dab120a94c2 108 /* Set SP(user) to LR */
mbed_official 80:2dab120a94c2 109 STMDB SP!,{LR}
mbed_official 80:2dab120a94c2 110 LDMIA SP,{SP}^
mbed_official 80:2dab120a94c2 111 NOP
mbed_official 80:2dab120a94c2 112 ADD SP, SP, #4
mbed_official 80:2dab120a94c2 113
mbed_official 80:2dab120a94c2 114 /* Restore the return address. */
mbed_official 80:2dab120a94c2 115 LDR LR, [LR,#-4] /* last dword is task's PC register */
mbed_official 80:2dab120a94c2 116
mbed_official 80:2dab120a94c2 117 /* And return - correcting the offset in the LR to obtain the */
mbed_official 80:2dab120a94c2 118 /* correct address. */
mbed_official 80:2dab120a94c2 119 SUBS PC, LR, #4
mbed_official 80:2dab120a94c2 120
mbed_official 80:2dab120a94c2 121 /*-------------------------- End --------------------------------*/
mbed_official 80:2dab120a94c2 122 .fnend
mbed_official 80:2dab120a94c2 123 .size RestoreContext, .-RestoreContext
mbed_official 80:2dab120a94c2 124
mbed_official 80:2dab120a94c2 125
mbed_official 80:2dab120a94c2 126
mbed_official 80:2dab120a94c2 127 /*--------------------------- rt_set_PSP ------------------------------------*/
mbed_official 80:2dab120a94c2 128
mbed_official 80:2dab120a94c2 129 # void rt_set_PSP (U32 stack);
mbed_official 80:2dab120a94c2 130
mbed_official 80:2dab120a94c2 131 .type rt_set_PSP, %function
mbed_official 80:2dab120a94c2 132 .global rt_set_PSP
mbed_official 80:2dab120a94c2 133 rt_set_PSP:
mbed_official 80:2dab120a94c2 134 .fnstart
mbed_official 80:2dab120a94c2 135 .cantunwind
mbed_official 80:2dab120a94c2 136
mbed_official 80:2dab120a94c2 137 MOV SP,R0
mbed_official 80:2dab120a94c2 138 BX LR
mbed_official 80:2dab120a94c2 139
mbed_official 80:2dab120a94c2 140 .fnend
mbed_official 80:2dab120a94c2 141 .size rt_set_PSP, .-rt_set_PSP
mbed_official 80:2dab120a94c2 142
mbed_official 80:2dab120a94c2 143
mbed_official 80:2dab120a94c2 144 /*--------------------------- rt_get_PSP ------------------------------------*/
mbed_official 80:2dab120a94c2 145
mbed_official 80:2dab120a94c2 146 # U32 rt_get_PSP (void);
mbed_official 80:2dab120a94c2 147
mbed_official 80:2dab120a94c2 148 .type rt_get_PSP, %function
mbed_official 80:2dab120a94c2 149 .global rt_get_PSP
mbed_official 80:2dab120a94c2 150 rt_get_PSP:
mbed_official 80:2dab120a94c2 151 .fnstart
mbed_official 80:2dab120a94c2 152 .cantunwind
mbed_official 80:2dab120a94c2 153
mbed_official 80:2dab120a94c2 154 MOV R0,SP
mbed_official 80:2dab120a94c2 155 BX LR
mbed_official 80:2dab120a94c2 156
mbed_official 80:2dab120a94c2 157 .fnend
mbed_official 80:2dab120a94c2 158 .size rt_get_PSP, .-rt_get_PSP
mbed_official 80:2dab120a94c2 159
mbed_official 80:2dab120a94c2 160
mbed_official 80:2dab120a94c2 161
mbed_official 80:2dab120a94c2 162 /*--------------------------- _alloc_box ------------------------------------*/
mbed_official 80:2dab120a94c2 163
mbed_official 80:2dab120a94c2 164 # void *_alloc_box (void *box_mem);
mbed_official 80:2dab120a94c2 165 /* Function wrapper for Unprivileged/Privileged mode. */
mbed_official 80:2dab120a94c2 166
mbed_official 80:2dab120a94c2 167 .type _alloc_box, %function
mbed_official 80:2dab120a94c2 168 .global _alloc_box
mbed_official 80:2dab120a94c2 169 _alloc_box:
mbed_official 80:2dab120a94c2 170 .fnstart
mbed_official 80:2dab120a94c2 171 .cantunwind
mbed_official 80:2dab120a94c2 172
mbed_official 80:2dab120a94c2 173 LDR R3,=rt_alloc_box
mbed_official 80:2dab120a94c2 174 MOV R12, R3
mbed_official 80:2dab120a94c2 175 MRS R3, CPSR
mbed_official 80:2dab120a94c2 176 AND R3, 0x1F
mbed_official 80:2dab120a94c2 177 CMP R3, 0x12 /* IRQ mode*/
mbed_official 80:2dab120a94c2 178 BNE PrivilegedA
mbed_official 80:2dab120a94c2 179 CMP R3, 0x1F /* System mode*/
mbed_official 80:2dab120a94c2 180 BNE PrivilegedA
mbed_official 80:2dab120a94c2 181 SVC 0
mbed_official 80:2dab120a94c2 182 BX LR
mbed_official 80:2dab120a94c2 183 PrivilegedA:
mbed_official 80:2dab120a94c2 184 BX R12
mbed_official 80:2dab120a94c2 185
mbed_official 80:2dab120a94c2 186 .fnend
mbed_official 80:2dab120a94c2 187 .size _alloc_box, .-_alloc_box
mbed_official 80:2dab120a94c2 188
mbed_official 80:2dab120a94c2 189
mbed_official 80:2dab120a94c2 190 /*--------------------------- _free_box -------------------------------------*/
mbed_official 80:2dab120a94c2 191
mbed_official 80:2dab120a94c2 192 # int _free_box (void *box_mem, void *box);
mbed_official 80:2dab120a94c2 193 /* Function wrapper for Unprivileged/Privileged mode. */
mbed_official 80:2dab120a94c2 194
mbed_official 80:2dab120a94c2 195 .type _free_box, %function
mbed_official 80:2dab120a94c2 196 .global _free_box
mbed_official 80:2dab120a94c2 197 _free_box:
mbed_official 80:2dab120a94c2 198 .fnstart
mbed_official 80:2dab120a94c2 199 .cantunwind
mbed_official 80:2dab120a94c2 200
mbed_official 80:2dab120a94c2 201 LDR R3,=rt_free_box
mbed_official 80:2dab120a94c2 202 MOV R12, R3
mbed_official 80:2dab120a94c2 203 MRS R3, CPSR
mbed_official 80:2dab120a94c2 204 AND R3, 0x1F
mbed_official 80:2dab120a94c2 205 CMP R3, 0x12 /* IRQ mode*/
mbed_official 80:2dab120a94c2 206 BNE PrivilegedA
mbed_official 80:2dab120a94c2 207 CMP R3, 0x1F /* System mode*/
mbed_official 80:2dab120a94c2 208 BNE PrivilegedA
mbed_official 80:2dab120a94c2 209 SVC 0
mbed_official 80:2dab120a94c2 210 BX LR
mbed_official 80:2dab120a94c2 211 PrivilegedF:
mbed_official 80:2dab120a94c2 212 BX R12
mbed_official 80:2dab120a94c2 213
mbed_official 80:2dab120a94c2 214 .fnend
mbed_official 80:2dab120a94c2 215 .size _free_box, .-_free_box
mbed_official 80:2dab120a94c2 216
mbed_official 80:2dab120a94c2 217
mbed_official 80:2dab120a94c2 218 /*-------------------------- SVC_Handler ------------------------------------*/
mbed_official 80:2dab120a94c2 219
mbed_official 80:2dab120a94c2 220 # void SVC_Handler (void);
mbed_official 80:2dab120a94c2 221
mbed_official 80:2dab120a94c2 222 .type SVC_Handler, %function
mbed_official 80:2dab120a94c2 223 .global SVC_Handler
mbed_official 80:2dab120a94c2 224 SVC_Handler:
mbed_official 80:2dab120a94c2 225 .fnstart
mbed_official 80:2dab120a94c2 226 .cantunwind
mbed_official 80:2dab120a94c2 227 /* Within an IRQ ISR the link register has an offset from the true return
mbed_official 80:2dab120a94c2 228 address, but an SWI ISR does not. Add the offset manually so the same
mbed_official 80:2dab120a94c2 229 ISR return code can be used in both cases. */
mbed_official 80:2dab120a94c2 230
mbed_official 80:2dab120a94c2 231 STMFD SP!, {R0,LR} /* Store registers. */
mbed_official 80:2dab120a94c2 232 ADD LR, LR, #4 /* Align LR with IRQ handler */
mbed_official 80:2dab120a94c2 233 SaveContext
mbed_official 80:2dab120a94c2 234 MOV R11, LR /* Save Task Stack Pointer */
mbed_official 80:2dab120a94c2 235 LDMFD SP!, {R0,LR} /* Restore registers and return. */
mbed_official 80:2dab120a94c2 236 STMFD SP!, {R11} /* Save Task Stack Pointer */
mbed_official 80:2dab120a94c2 237
mbed_official 80:2dab120a94c2 238 LDR R5, [LR,#-4] /* Calculate address of SWI instruction and load it into r5. */
mbed_official 80:2dab120a94c2 239 BIC R5, R5,#0xff000000 /* Mask off top 8 bits of instruction to give SWI number. */
mbed_official 80:2dab120a94c2 240
mbed_official 80:2dab120a94c2 241 CMP R5, #0
mbed_official 80:2dab120a94c2 242 BNE SVC_User /* User SVC Number > 0 */
mbed_official 80:2dab120a94c2 243 MOV LR, PC /* set LR to return address */
mbed_official 80:2dab120a94c2 244 BX R12 /* Call SVC Function */
mbed_official 80:2dab120a94c2 245
mbed_official 80:2dab120a94c2 246 LDMFD SP!, {R11} /* Load Task Stack Pointer */
mbed_official 80:2dab120a94c2 247 STMIB R11!, {R0-R3} /* Store return values to Task stack */
mbed_official 80:2dab120a94c2 248
mbed_official 80:2dab120a94c2 249 SVC_Exit:
mbed_official 80:2dab120a94c2 250 B RestoreContext /* return to the task */
mbed_official 80:2dab120a94c2 251
mbed_official 80:2dab120a94c2 252 /*------------------- User SVC ------------------------------*/
mbed_official 80:2dab120a94c2 253
mbed_official 80:2dab120a94c2 254 SVC_User:
mbed_official 80:2dab120a94c2 255 LDR R6,=SVC_Count
mbed_official 80:2dab120a94c2 256 LDR R6,[R6]
mbed_official 80:2dab120a94c2 257 CMP R5,R6
mbed_official 80:2dab120a94c2 258 LDMFDHI SP!, {R11}
mbed_official 80:2dab120a94c2 259 BHI SVC_Done /* Overflow */
mbed_official 80:2dab120a94c2 260
mbed_official 80:2dab120a94c2 261 LDR R4,=SVC_Table - 4
mbed_official 80:2dab120a94c2 262 LSLS R5,R5,#2
mbed_official 80:2dab120a94c2 263 LDR R4,[R4,R5] /* Load SVC Function Address */
mbed_official 80:2dab120a94c2 264 /* R0-R3,R12 are unchanged */
mbed_official 80:2dab120a94c2 265 MOV LR, PC /* set LR to return address */
mbed_official 80:2dab120a94c2 266 BX R4 /* Call SVC Function */
mbed_official 80:2dab120a94c2 267
mbed_official 80:2dab120a94c2 268 LDMFD SP!, {R11} /* Load Task Stack Pointer */
mbed_official 80:2dab120a94c2 269 BEQ SVC_Exit /* no need in return values */
mbed_official 80:2dab120a94c2 270
mbed_official 80:2dab120a94c2 271 STMIB R11!, {R0-R3} /* Store return values to Task stack */
mbed_official 80:2dab120a94c2 272 SVC_Done:
mbed_official 80:2dab120a94c2 273 B RestoreContext /* return to the task */
mbed_official 80:2dab120a94c2 274
mbed_official 80:2dab120a94c2 275 .fnend
mbed_official 80:2dab120a94c2 276 .size SVC_Handler, .-SVC_Handler
mbed_official 80:2dab120a94c2 277
mbed_official 80:2dab120a94c2 278
mbed_official 80:2dab120a94c2 279 /*-------------------------- IRQ_Handler ---------------------------------*/
mbed_official 80:2dab120a94c2 280
mbed_official 80:2dab120a94c2 281 # void IRQ_Handler (void);
mbed_official 80:2dab120a94c2 282
mbed_official 80:2dab120a94c2 283 .type IRQ_Handler, %function
mbed_official 80:2dab120a94c2 284 .global IRQ_Handler
mbed_official 80:2dab120a94c2 285 IRQ_Handler:
mbed_official 80:2dab120a94c2 286 .fnstart
mbed_official 80:2dab120a94c2 287 .cantunwind
mbed_official 80:2dab120a94c2 288
mbed_official 80:2dab120a94c2 289 SaveContext
mbed_official 80:2dab120a94c2 290
mbed_official 80:2dab120a94c2 291 MOV R0, #0xFFFFFF00
mbed_official 80:2dab120a94c2 292 LDR R0, [R0] /* Load address of raised IRQ handler*/
mbed_official 80:2dab120a94c2 293
mbed_official 80:2dab120a94c2 294 MOV LR, PC
mbed_official 80:2dab120a94c2 295 BX R0
mbed_official 80:2dab120a94c2 296
mbed_official 80:2dab120a94c2 297 MOV R0, #0xFFFFFF00
mbed_official 80:2dab120a94c2 298 STR R0, [R0] /* Clear interrupt */
mbed_official 80:2dab120a94c2 299
mbed_official 80:2dab120a94c2 300 B RestoreContext
mbed_official 80:2dab120a94c2 301
mbed_official 80:2dab120a94c2 302 .fnend
mbed_official 80:2dab120a94c2 303 .size IRQ_Handler, .-IRQ_Handler
mbed_official 80:2dab120a94c2 304
mbed_official 80:2dab120a94c2 305 /*-------------------------- SysTick_Handler --------------------------------*/
mbed_official 80:2dab120a94c2 306
mbed_official 80:2dab120a94c2 307 # void SysTick_Handler (void);
mbed_official 80:2dab120a94c2 308
mbed_official 80:2dab120a94c2 309 .type SysTick_Handler, %function
mbed_official 80:2dab120a94c2 310 .global SysTick_Handler
mbed_official 80:2dab120a94c2 311 SysTick_Handler:
mbed_official 80:2dab120a94c2 312 .fnstart
mbed_official 80:2dab120a94c2 313 .cantunwind
mbed_official 80:2dab120a94c2 314
mbed_official 80:2dab120a94c2 315 PUSH {LR}
mbed_official 80:2dab120a94c2 316 BL rt_systick
mbed_official 80:2dab120a94c2 317 POP {LR}
mbed_official 80:2dab120a94c2 318 BX LR /* return to IRQ handler */
mbed_official 80:2dab120a94c2 319
mbed_official 80:2dab120a94c2 320 /*-------------------------- End --------------------------------*/
mbed_official 80:2dab120a94c2 321 .fnend
mbed_official 80:2dab120a94c2 322 .size SysTick_Handler, .-SysTick_Handler
mbed_official 80:2dab120a94c2 323
mbed_official 80:2dab120a94c2 324
mbed_official 80:2dab120a94c2 325 /*----------------------------------------------------------------------------
mbed_official 80:2dab120a94c2 326 * end of file
mbed_official 80:2dab120a94c2 327 *---------------------------------------------------------------------------*/
mbed_official 80:2dab120a94c2 328
mbed_official 80:2dab120a94c2 329 .end