Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: Nucleo_L432KC_Quadrature_Decoder_with_ADC_and_DAC
Fork of mbed-dev by
targets/cmsis/TARGET_RENESAS/TARGET_VK_RZ_A1H/TOOLCHAIN_IAR/startup_VKRZA1H.s@144:ef7eb2e8f9f7, 2016-09-02 (annotated)
- Committer:
- <>
- Date:
- Fri Sep 02 15:07:44 2016 +0100
- Revision:
- 144:ef7eb2e8f9f7
- Parent:
- 119:3921aeca8633
This updates the lib to the mbed lib v125
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| mbed_official | 119:3921aeca8633 | 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| mbed_official | 119:3921aeca8633 | 2 | ;; |
| mbed_official | 119:3921aeca8633 | 3 | ;; Part one of the system initialization code, |
| mbed_official | 119:3921aeca8633 | 4 | ;; contains low-level |
| mbed_official | 119:3921aeca8633 | 5 | ;; initialization. |
| mbed_official | 119:3921aeca8633 | 6 | ;; |
| mbed_official | 119:3921aeca8633 | 7 | ;; Copyright 2007 IAR Systems. All rights reserved. |
| mbed_official | 119:3921aeca8633 | 8 | ;; |
| mbed_official | 119:3921aeca8633 | 9 | ;; $Revision: 49919 $ |
| mbed_official | 119:3921aeca8633 | 10 | ;; |
| mbed_official | 119:3921aeca8633 | 11 | |
| mbed_official | 119:3921aeca8633 | 12 | MODULE ?cstartup |
| mbed_official | 119:3921aeca8633 | 13 | |
| mbed_official | 119:3921aeca8633 | 14 | ;; Forward declaration of sections. |
| mbed_official | 119:3921aeca8633 | 15 | SECTION SVC_STACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 16 | SECTION IRQ_STACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 17 | SECTION ABT_STACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 18 | SECTION FIQ_STACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 19 | SECTION UND_STACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 20 | SECTION CSTACK:DATA:NOROOT(3) |
| mbed_official | 119:3921aeca8633 | 21 | |
| mbed_official | 119:3921aeca8633 | 22 | ; |
| mbed_official | 119:3921aeca8633 | 23 | ; The module in this file are included in the libraries, and may be |
| mbed_official | 119:3921aeca8633 | 24 | ; replaced by any user-defined modules that define the PUBLIC symbol |
| mbed_official | 119:3921aeca8633 | 25 | ; __iar_program_start or a user defined start symbol. |
| mbed_official | 119:3921aeca8633 | 26 | ; |
| mbed_official | 119:3921aeca8633 | 27 | ; To override the cstartup defined in the library, simply add your |
| mbed_official | 119:3921aeca8633 | 28 | ; modified version to the workbench project. |
| mbed_official | 119:3921aeca8633 | 29 | |
| mbed_official | 119:3921aeca8633 | 30 | SECTION .intvec:CODE:NOROOT(2) |
| mbed_official | 119:3921aeca8633 | 31 | |
| <> | 144:ef7eb2e8f9f7 | 32 | PUBLIC __vector_core_a9 |
| <> | 144:ef7eb2e8f9f7 | 33 | PUBWEAK __iar_program_start |
| mbed_official | 119:3921aeca8633 | 34 | PUBLIC Undefined_Handler |
| mbed_official | 119:3921aeca8633 | 35 | EXTERN SWI_Handler |
| mbed_official | 119:3921aeca8633 | 36 | PUBLIC Prefetch_Handler |
| mbed_official | 119:3921aeca8633 | 37 | PUBLIC Abort_Handler |
| mbed_official | 119:3921aeca8633 | 38 | PUBLIC IRQ_Handler |
| mbed_official | 119:3921aeca8633 | 39 | PUBLIC FIQ_Handler |
| mbed_official | 119:3921aeca8633 | 40 | EXTERN VbarInit |
| mbed_official | 119:3921aeca8633 | 41 | EXTERN SetLowVectors |
| mbed_official | 119:3921aeca8633 | 42 | EXTERN init_TTB |
| mbed_official | 119:3921aeca8633 | 43 | EXTERN enable_mmu |
| mbed_official | 119:3921aeca8633 | 44 | EXTERN Peripheral_BasicInit |
| mbed_official | 119:3921aeca8633 | 45 | EXTERN initsct |
| mbed_official | 119:3921aeca8633 | 46 | EXTERN PowerON_Reset |
| mbed_official | 119:3921aeca8633 | 47 | PUBLIC FPUEnable |
| mbed_official | 119:3921aeca8633 | 48 | |
| mbed_official | 119:3921aeca8633 | 49 | |
| mbed_official | 119:3921aeca8633 | 50 | DATA |
| mbed_official | 119:3921aeca8633 | 51 | |
| mbed_official | 119:3921aeca8633 | 52 | __iar_init$$done: ; The vector table is not needed |
| mbed_official | 119:3921aeca8633 | 53 | ; until after copy initialization is done |
| mbed_official | 119:3921aeca8633 | 54 | |
| <> | 144:ef7eb2e8f9f7 | 55 | __vector_core_a9: ; Make this a DATA label, so that stack usage |
| mbed_official | 119:3921aeca8633 | 56 | ; analysis doesn't consider it an uncalled fun |
| mbed_official | 119:3921aeca8633 | 57 | |
| mbed_official | 119:3921aeca8633 | 58 | ARM |
| mbed_official | 119:3921aeca8633 | 59 | |
| mbed_official | 119:3921aeca8633 | 60 | ; All default exception handlers (except reset) are |
| mbed_official | 119:3921aeca8633 | 61 | ; defined as weak symbol definitions. |
| mbed_official | 119:3921aeca8633 | 62 | ; If a handler is defined by the application it will take precedence. |
| mbed_official | 119:3921aeca8633 | 63 | LDR PC,Reset_Addr ; Reset |
| mbed_official | 119:3921aeca8633 | 64 | LDR PC,Undefined_Addr ; Undefined instructions |
| mbed_official | 119:3921aeca8633 | 65 | LDR PC,SWI_Addr ; Software interrupt (SWI/SVC) |
| mbed_official | 119:3921aeca8633 | 66 | LDR PC,Prefetch_Addr ; Prefetch abort |
| mbed_official | 119:3921aeca8633 | 67 | LDR PC,Abort_Addr ; Data abort |
| mbed_official | 119:3921aeca8633 | 68 | DCD 0 ; RESERVED |
| mbed_official | 119:3921aeca8633 | 69 | LDR PC,IRQ_Addr ; IRQ |
| mbed_official | 119:3921aeca8633 | 70 | LDR PC,FIQ_Addr ; FIQ |
| mbed_official | 119:3921aeca8633 | 71 | |
| mbed_official | 119:3921aeca8633 | 72 | DATA |
| mbed_official | 119:3921aeca8633 | 73 | |
| mbed_official | 119:3921aeca8633 | 74 | Reset_Addr: DCD __iar_program_start |
| mbed_official | 119:3921aeca8633 | 75 | Undefined_Addr: DCD Undefined_Handler |
| mbed_official | 119:3921aeca8633 | 76 | SWI_Addr: DCD SWI_Handler |
| mbed_official | 119:3921aeca8633 | 77 | Prefetch_Addr: DCD Prefetch_Handler |
| mbed_official | 119:3921aeca8633 | 78 | Abort_Addr: DCD Abort_Handler |
| mbed_official | 119:3921aeca8633 | 79 | IRQ_Addr: DCD IRQ_Handler |
| mbed_official | 119:3921aeca8633 | 80 | FIQ_Addr: DCD FIQ_Handler |
| mbed_official | 119:3921aeca8633 | 81 | |
| mbed_official | 119:3921aeca8633 | 82 | |
| mbed_official | 119:3921aeca8633 | 83 | ; -------------------------------------------------- |
| mbed_official | 119:3921aeca8633 | 84 | ; ?cstartup -- low-level system initialization code. |
| mbed_official | 119:3921aeca8633 | 85 | ; |
| mbed_official | 119:3921aeca8633 | 86 | ; After a reset execution starts here, the mode is ARM, supervisor |
| mbed_official | 119:3921aeca8633 | 87 | ; with interrupts disabled. |
| mbed_official | 119:3921aeca8633 | 88 | ; |
| mbed_official | 119:3921aeca8633 | 89 | |
| mbed_official | 119:3921aeca8633 | 90 | |
| mbed_official | 119:3921aeca8633 | 91 | |
| mbed_official | 119:3921aeca8633 | 92 | SECTION .text:CODE:NOROOT(2) |
| mbed_official | 119:3921aeca8633 | 93 | EXTERN RZ_A1_SetSramWriteEnable |
| mbed_official | 119:3921aeca8633 | 94 | EXTERN create_translation_table |
| mbed_official | 119:3921aeca8633 | 95 | EXTERN SystemInit |
| mbed_official | 119:3921aeca8633 | 96 | EXTERN InitMemorySubsystem |
| mbed_official | 119:3921aeca8633 | 97 | EXTERN __cmain |
| <> | 144:ef7eb2e8f9f7 | 98 | REQUIRE __vector_core_a9 |
| mbed_official | 119:3921aeca8633 | 99 | EXTWEAK __iar_init_core |
| mbed_official | 119:3921aeca8633 | 100 | EXTWEAK __iar_init_vfp |
| mbed_official | 119:3921aeca8633 | 101 | |
| mbed_official | 119:3921aeca8633 | 102 | |
| mbed_official | 119:3921aeca8633 | 103 | ARM |
| mbed_official | 119:3921aeca8633 | 104 | |
| mbed_official | 119:3921aeca8633 | 105 | __iar_program_start: |
| mbed_official | 119:3921aeca8633 | 106 | ?cstartup: |
| mbed_official | 119:3921aeca8633 | 107 | |
| mbed_official | 119:3921aeca8633 | 108 | |
| mbed_official | 119:3921aeca8633 | 109 | ;;; @ Put any cores other than 0 to sleep |
| mbed_official | 119:3921aeca8633 | 110 | mrc p15, 0, r0, c0, c0, 5 ;;; @ Read MPIDR |
| mbed_official | 119:3921aeca8633 | 111 | ands r0, r0, #3 |
| mbed_official | 119:3921aeca8633 | 112 | |
| mbed_official | 119:3921aeca8633 | 113 | goToSleep: |
| mbed_official | 119:3921aeca8633 | 114 | wfine |
| mbed_official | 119:3921aeca8633 | 115 | bne goToSleep |
| mbed_official | 119:3921aeca8633 | 116 | |
| mbed_official | 119:3921aeca8633 | 117 | |
| mbed_official | 119:3921aeca8633 | 118 | //@ Enable access to NEON/VFP by enabling access to Coprocessors 10 and 11. |
| mbed_official | 119:3921aeca8633 | 119 | //@ Enables Full Access i.e. in both privileged and non privileged modes |
| mbed_official | 119:3921aeca8633 | 120 | mrc p15, 0, r0, c1, c0, 2 ;@ Read Coprocessor Access Control Register (CPACR) |
| mbed_official | 119:3921aeca8633 | 121 | orr r0, r0, #(0xF << 20) ;@ Enable access to CP 10 & 11 |
| mbed_official | 119:3921aeca8633 | 122 | mcr p15, 0, r0, c1, c0, 2 ;@ Write Coprocessor Access Control Register (CPACR) |
| mbed_official | 119:3921aeca8633 | 123 | isb |
| mbed_official | 119:3921aeca8633 | 124 | |
| mbed_official | 119:3921aeca8633 | 125 | |
| mbed_official | 119:3921aeca8633 | 126 | ;; Switch on the VFP and NEON hardware |
| mbed_official | 119:3921aeca8633 | 127 | mov r0, #0x40000000 |
| mbed_official | 119:3921aeca8633 | 128 | vmsr fpexc, r0 ;@ Write FPEXC register, EN bit set |
| mbed_official | 119:3921aeca8633 | 129 | |
| mbed_official | 119:3921aeca8633 | 130 | mrc p15, 0, r0, c1, c0, 0 ;@ Read CP15 System Control register |
| mbed_official | 119:3921aeca8633 | 131 | bic r0, r0, #(0x1 << 12) ;@ Clear I bit 12 to disable I Cache |
| mbed_official | 119:3921aeca8633 | 132 | bic r0, r0, #(0x1 << 2) ;@ Clear C bit 2 to disable D Cache |
| mbed_official | 119:3921aeca8633 | 133 | bic r0, r0, #0x1 ;@ Clear M bit 0 to disable MMU |
| mbed_official | 119:3921aeca8633 | 134 | bic r0, r0, #(0x1 << 11) ;@ Clear Z bit 11 to disable branch prediction |
| mbed_official | 119:3921aeca8633 | 135 | bic r0, r0, #(0x1 << 13) ;@ Clear V bit 13 to disable hivecs |
| mbed_official | 119:3921aeca8633 | 136 | mcr p15, 0, r0, c1, c0, 0 ;@ Write value back to CP15 System Control register |
| mbed_official | 119:3921aeca8633 | 137 | isb |
| mbed_official | 119:3921aeca8633 | 138 | |
| mbed_official | 119:3921aeca8633 | 139 | |
| mbed_official | 119:3921aeca8633 | 140 | ;; Set Vector Base Address Register (VBAR) to point to this application's vector table |
| <> | 144:ef7eb2e8f9f7 | 141 | ldr r0, =__vector_core_a9 |
| mbed_official | 119:3921aeca8633 | 142 | mcr p15, 0, r0, c12, c0, 0 |
| mbed_official | 119:3921aeca8633 | 143 | |
| mbed_official | 119:3921aeca8633 | 144 | |
| mbed_official | 119:3921aeca8633 | 145 | ; |
| mbed_official | 119:3921aeca8633 | 146 | ; Add initialization needed before setup of stackpointers here. |
| mbed_official | 119:3921aeca8633 | 147 | ; |
| mbed_official | 119:3921aeca8633 | 148 | |
| mbed_official | 119:3921aeca8633 | 149 | ; |
| mbed_official | 119:3921aeca8633 | 150 | ; Initialize the stack pointers. |
| mbed_official | 119:3921aeca8633 | 151 | ; The pattern below can be used for any of the exception stacks: |
| mbed_official | 119:3921aeca8633 | 152 | ; FIQ, IRQ, SVC, ABT, UND, SYS. |
| mbed_official | 119:3921aeca8633 | 153 | ; The USR mode uses the same stack as SYS. |
| mbed_official | 119:3921aeca8633 | 154 | ; The stack segments must be defined in the linker command file, |
| mbed_official | 119:3921aeca8633 | 155 | ; and be declared above. |
| mbed_official | 119:3921aeca8633 | 156 | ; |
| mbed_official | 119:3921aeca8633 | 157 | |
| mbed_official | 119:3921aeca8633 | 158 | |
| mbed_official | 119:3921aeca8633 | 159 | ; -------------------- |
| mbed_official | 119:3921aeca8633 | 160 | ; Mode, correspords to bits 0-5 in CPSR |
| mbed_official | 119:3921aeca8633 | 161 | |
| mbed_official | 119:3921aeca8633 | 162 | #define MODE_MSK 0x1F ; Bit mask for mode bits in CPSR |
| mbed_official | 119:3921aeca8633 | 163 | |
| mbed_official | 119:3921aeca8633 | 164 | #define USR_MODE 0x10 ; User mode |
| mbed_official | 119:3921aeca8633 | 165 | #define FIQ_MODE 0x11 ; Fast Interrupt Request mode |
| mbed_official | 119:3921aeca8633 | 166 | #define IRQ_MODE 0x12 ; Interrupt Request mode |
| mbed_official | 119:3921aeca8633 | 167 | #define SVC_MODE 0x13 ; Supervisor mode |
| mbed_official | 119:3921aeca8633 | 168 | #define ABT_MODE 0x17 ; Abort mode |
| mbed_official | 119:3921aeca8633 | 169 | #define UND_MODE 0x1B ; Undefined Instruction mode |
| mbed_official | 119:3921aeca8633 | 170 | #define SYS_MODE 0x1F ; System mode |
| mbed_official | 119:3921aeca8633 | 171 | |
| mbed_official | 119:3921aeca8633 | 172 | #define Mode_SVC 0x13 |
| mbed_official | 119:3921aeca8633 | 173 | #define Mode_ABT 0x17 |
| mbed_official | 119:3921aeca8633 | 174 | #define Mode_UND 0x1B |
| mbed_official | 119:3921aeca8633 | 175 | #define GICI_BASE 0xe8202000 |
| mbed_official | 119:3921aeca8633 | 176 | #define ICCIAR_OFFSET 0x0000000C |
| mbed_official | 119:3921aeca8633 | 177 | #define ICCEOIR_OFFSET 0x00000010 |
| mbed_official | 119:3921aeca8633 | 178 | #define ICCHPIR_OFFSET 0x00000018 |
| mbed_official | 119:3921aeca8633 | 179 | #define GICD_BASE 0xe8201000 |
| mbed_official | 119:3921aeca8633 | 180 | #define GIC_ERRATA_CHECK_1 0x000003FE |
| mbed_official | 119:3921aeca8633 | 181 | #define GIC_ERRATA_CHECK_2 0x000003FF |
| mbed_official | 119:3921aeca8633 | 182 | #define ICDABR0_OFFSET 0x00000300 |
| mbed_official | 119:3921aeca8633 | 183 | #define ICDIPR0_OFFSET 0x00000400 |
| mbed_official | 119:3921aeca8633 | 184 | #define T_Bit 0x20 ; when T bit is set, core is in Thumb state |
| mbed_official | 119:3921aeca8633 | 185 | |
| mbed_official | 119:3921aeca8633 | 186 | MRS r0, cpsr ; Original PSR value |
| mbed_official | 119:3921aeca8633 | 187 | |
| mbed_official | 119:3921aeca8633 | 188 | ;; Set up the SVC stack pointer. |
| mbed_official | 119:3921aeca8633 | 189 | BIC r0, r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 190 | ORR r0, r0, #SVC_MODE ; Set SVC mode bits |
| mbed_official | 119:3921aeca8633 | 191 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 192 | LDR sp, =SFE(SVC_STACK) ; End of SVC_STACK |
| mbed_official | 119:3921aeca8633 | 193 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 194 | |
| mbed_official | 119:3921aeca8633 | 195 | ;; Set up the interrupt stack pointer. |
| mbed_official | 119:3921aeca8633 | 196 | |
| mbed_official | 119:3921aeca8633 | 197 | BIC r0, r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 198 | ORR r0, r0, #IRQ_MODE ; Set IRQ mode bits |
| mbed_official | 119:3921aeca8633 | 199 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 200 | LDR sp, =SFE(IRQ_STACK) ; End of IRQ_STACK |
| mbed_official | 119:3921aeca8633 | 201 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 202 | |
| mbed_official | 119:3921aeca8633 | 203 | ;; Set up the fast interrupt stack pointer. |
| mbed_official | 119:3921aeca8633 | 204 | |
| mbed_official | 119:3921aeca8633 | 205 | BIC r0, r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 206 | ORR r0, r0, #FIQ_MODE ; Set FIR mode bits |
| mbed_official | 119:3921aeca8633 | 207 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 208 | LDR sp, =SFE(FIQ_STACK) ; End of FIQ_STACK |
| mbed_official | 119:3921aeca8633 | 209 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 210 | |
| mbed_official | 119:3921aeca8633 | 211 | |
| mbed_official | 119:3921aeca8633 | 212 | ;; Set up the ABT stack pointer. |
| mbed_official | 119:3921aeca8633 | 213 | |
| mbed_official | 119:3921aeca8633 | 214 | BIC r0 ,r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 215 | ORR r0 ,r0, #ABT_MODE ; Set System mode bits |
| mbed_official | 119:3921aeca8633 | 216 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 217 | LDR sp, =SFE(ABT_STACK) ; End of CSTACK |
| mbed_official | 119:3921aeca8633 | 218 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 219 | |
| mbed_official | 119:3921aeca8633 | 220 | |
| mbed_official | 119:3921aeca8633 | 221 | ;; Set up the UDF stack pointer. |
| mbed_official | 119:3921aeca8633 | 222 | |
| mbed_official | 119:3921aeca8633 | 223 | BIC r0 ,r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 224 | ORR r0 ,r0, #UND_MODE ; Set System mode bits |
| mbed_official | 119:3921aeca8633 | 225 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 226 | LDR sp, =SFE(UND_STACK) ; End of CSTACK |
| mbed_official | 119:3921aeca8633 | 227 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 228 | |
| mbed_official | 119:3921aeca8633 | 229 | ;; Set up the normal stack pointer. |
| mbed_official | 119:3921aeca8633 | 230 | |
| mbed_official | 119:3921aeca8633 | 231 | BIC r0 ,r0, #MODE_MSK ; Clear the mode bits |
| mbed_official | 119:3921aeca8633 | 232 | ORR r0 ,r0, #SYS_MODE ; Set System mode bits |
| mbed_official | 119:3921aeca8633 | 233 | MSR cpsr_c, r0 ; Change the mode |
| mbed_official | 119:3921aeca8633 | 234 | LDR sp, =SFE(CSTACK) ; End of CSTACK |
| mbed_official | 119:3921aeca8633 | 235 | BIC sp,sp,#0x7 ; Make sure SP is 8 aligned |
| mbed_official | 119:3921aeca8633 | 236 | |
| mbed_official | 119:3921aeca8633 | 237 | ;;; |
| mbed_official | 119:3921aeca8633 | 238 | |
| mbed_official | 119:3921aeca8633 | 239 | isb |
| mbed_official | 119:3921aeca8633 | 240 | ldr r0, =RZ_A1_SetSramWriteEnable |
| mbed_official | 119:3921aeca8633 | 241 | blx r0 |
| mbed_official | 119:3921aeca8633 | 242 | |
| mbed_official | 119:3921aeca8633 | 243 | bl create_translation_table |
| mbed_official | 119:3921aeca8633 | 244 | |
| mbed_official | 119:3921aeca8633 | 245 | ; USR/SYS stack pointer will be set during kernel init |
| mbed_official | 119:3921aeca8633 | 246 | ldr r0, =SystemInit |
| mbed_official | 119:3921aeca8633 | 247 | blx r0 |
| mbed_official | 119:3921aeca8633 | 248 | ldr r0, =InitMemorySubsystem |
| mbed_official | 119:3921aeca8633 | 249 | blx r0 |
| mbed_official | 119:3921aeca8633 | 250 | |
| mbed_official | 119:3921aeca8633 | 251 | ; fp_init |
| mbed_official | 119:3921aeca8633 | 252 | mov r0, #0x3000000 |
| mbed_official | 119:3921aeca8633 | 253 | vmsr fpscr, r0 |
| mbed_official | 119:3921aeca8633 | 254 | |
| mbed_official | 119:3921aeca8633 | 255 | |
| mbed_official | 119:3921aeca8633 | 256 | |
| mbed_official | 119:3921aeca8633 | 257 | ;;; Continue to __cmain for C-level initialization. |
| mbed_official | 119:3921aeca8633 | 258 | |
| mbed_official | 119:3921aeca8633 | 259 | FUNCALL __iar_program_start, __cmain |
| mbed_official | 119:3921aeca8633 | 260 | B __cmain |
| mbed_official | 119:3921aeca8633 | 261 | |
| mbed_official | 119:3921aeca8633 | 262 | |
| mbed_official | 119:3921aeca8633 | 263 | ldr r0, sf_boot ;@ dummy to keep boot loader area |
| mbed_official | 119:3921aeca8633 | 264 | loop_here: |
| mbed_official | 119:3921aeca8633 | 265 | b loop_here |
| mbed_official | 119:3921aeca8633 | 266 | |
| mbed_official | 119:3921aeca8633 | 267 | sf_boot: |
| mbed_official | 119:3921aeca8633 | 268 | DC32 0x00000001 |
| mbed_official | 119:3921aeca8633 | 269 | |
| mbed_official | 119:3921aeca8633 | 270 | Undefined_Handler: |
| mbed_official | 119:3921aeca8633 | 271 | EXTERN CUndefHandler |
| mbed_official | 119:3921aeca8633 | 272 | SRSDB SP!, #Mode_UND |
| mbed_official | 119:3921aeca8633 | 273 | PUSH {R0-R4, R12} /* Save APCS corruptible registers to UND mode stack */ |
| mbed_official | 119:3921aeca8633 | 274 | |
| mbed_official | 119:3921aeca8633 | 275 | MRS R0, SPSR |
| mbed_official | 119:3921aeca8633 | 276 | TST R0, #T_Bit /* Check mode */ |
| mbed_official | 119:3921aeca8633 | 277 | MOVEQ R1, #4 /* R1 = 4 ARM mode */ |
| mbed_official | 119:3921aeca8633 | 278 | MOVNE R1, #2 /* R1 = 2 Thumb mode */ |
| mbed_official | 119:3921aeca8633 | 279 | SUB R0, LR, R1 |
| mbed_official | 119:3921aeca8633 | 280 | LDREQ R0, [R0] /* ARM mode - R0 points to offending instruction */ |
| mbed_official | 119:3921aeca8633 | 281 | BEQ undef_cont |
| mbed_official | 119:3921aeca8633 | 282 | |
| mbed_official | 119:3921aeca8633 | 283 | /* Thumb instruction */ |
| mbed_official | 119:3921aeca8633 | 284 | /* Determine if it is a 32-bit Thumb instruction */ |
| mbed_official | 119:3921aeca8633 | 285 | LDRH R0, [R0] |
| mbed_official | 119:3921aeca8633 | 286 | MOV R2, #0x1c |
| mbed_official | 119:3921aeca8633 | 287 | CMP R2, R0, LSR #11 |
| mbed_official | 119:3921aeca8633 | 288 | BHS undef_cont /* 16-bit Thumb instruction */ |
| mbed_official | 119:3921aeca8633 | 289 | |
| mbed_official | 119:3921aeca8633 | 290 | /* 32-bit Thumb instruction. Unaligned - we need to reconstruct the offending instruction. */ |
| mbed_official | 119:3921aeca8633 | 291 | LDRH R2, [LR] |
| mbed_official | 119:3921aeca8633 | 292 | ORR R0, R2, R0, LSL #16 |
| mbed_official | 119:3921aeca8633 | 293 | undef_cont: |
| mbed_official | 119:3921aeca8633 | 294 | MOV R2, LR /* Set LR to third argument */ |
| mbed_official | 119:3921aeca8633 | 295 | |
| mbed_official | 119:3921aeca8633 | 296 | /* AND R12, SP, #4 */ /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 297 | MOV R3, SP /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 298 | AND R12, R3, #4 |
| mbed_official | 119:3921aeca8633 | 299 | SUB SP, SP, R12 /* Adjust stack */ |
| mbed_official | 119:3921aeca8633 | 300 | PUSH {R12, LR} /* Store stack adjustment and dummy LR */ |
| mbed_official | 119:3921aeca8633 | 301 | |
| mbed_official | 119:3921aeca8633 | 302 | /* R0 Offending instruction */ |
| mbed_official | 119:3921aeca8633 | 303 | /* R1 =2 (Thumb) or =4 (ARM) */ |
| mbed_official | 119:3921aeca8633 | 304 | BL CUndefHandler |
| mbed_official | 119:3921aeca8633 | 305 | |
| mbed_official | 119:3921aeca8633 | 306 | POP {R12, LR} /* Get stack adjustment & discard dummy LR */ |
| mbed_official | 119:3921aeca8633 | 307 | ADD SP, SP, R12 /* Unadjust stack */ |
| mbed_official | 119:3921aeca8633 | 308 | |
| mbed_official | 119:3921aeca8633 | 309 | LDR LR, [SP, #24] /* Restore stacked LR and possibly adjust for retry */ |
| mbed_official | 119:3921aeca8633 | 310 | SUB LR, LR, R0 |
| mbed_official | 119:3921aeca8633 | 311 | LDR R0, [SP, #28] /* Restore stacked SPSR */ |
| mbed_official | 119:3921aeca8633 | 312 | MSR SPSR_cxsf, R0 |
| mbed_official | 119:3921aeca8633 | 313 | POP {R0-R4, R12} /* Restore stacked APCS registers */ |
| mbed_official | 119:3921aeca8633 | 314 | ADD SP, SP, #8 /* Adjust SP for already-restored banked registers */ |
| mbed_official | 119:3921aeca8633 | 315 | MOVS PC, LR |
| mbed_official | 119:3921aeca8633 | 316 | |
| mbed_official | 119:3921aeca8633 | 317 | Prefetch_Handler: |
| mbed_official | 119:3921aeca8633 | 318 | EXTERN CPAbtHandler |
| mbed_official | 119:3921aeca8633 | 319 | SUB LR, LR, #4 /* Pre-adjust LR */ |
| mbed_official | 119:3921aeca8633 | 320 | SRSDB SP!, #Mode_ABT /* Save LR and SPRS to ABT mode stack */ |
| mbed_official | 119:3921aeca8633 | 321 | PUSH {R0-R4, R12} /* Save APCS corruptible registers to ABT mode stack */ |
| mbed_official | 119:3921aeca8633 | 322 | MRC p15, 0, R0, c5, c0, 1 /* IFSR */ |
| mbed_official | 119:3921aeca8633 | 323 | MRC p15, 0, R1, c6, c0, 2 /* IFAR */ |
| mbed_official | 119:3921aeca8633 | 324 | |
| mbed_official | 119:3921aeca8633 | 325 | MOV R2, LR /* Set LR to third argument */ |
| mbed_official | 119:3921aeca8633 | 326 | |
| mbed_official | 119:3921aeca8633 | 327 | /* AND R12, SP, #4 */ /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 328 | MOV R3, SP /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 329 | AND R12, R3, #4 |
| mbed_official | 119:3921aeca8633 | 330 | SUB SP, SP, R12 /* Adjust stack */ |
| mbed_official | 119:3921aeca8633 | 331 | PUSH {R12, LR} /* Store stack adjustment and dummy LR */ |
| mbed_official | 119:3921aeca8633 | 332 | |
| mbed_official | 119:3921aeca8633 | 333 | BL CPAbtHandler |
| mbed_official | 119:3921aeca8633 | 334 | |
| mbed_official | 119:3921aeca8633 | 335 | POP {R12, LR} /* Get stack adjustment & discard dummy LR */ |
| mbed_official | 119:3921aeca8633 | 336 | ADD SP, SP, R12 /* Unadjust stack */ |
| mbed_official | 119:3921aeca8633 | 337 | |
| mbed_official | 119:3921aeca8633 | 338 | POP {R0-R4, R12} /* Restore stack APCS registers */ |
| mbed_official | 119:3921aeca8633 | 339 | RFEFD SP! /* Return from exception */ |
| mbed_official | 119:3921aeca8633 | 340 | |
| mbed_official | 119:3921aeca8633 | 341 | Abort_Handler: |
| mbed_official | 119:3921aeca8633 | 342 | EXTERN CDAbtHandler |
| mbed_official | 119:3921aeca8633 | 343 | SUB LR, LR, #8 /* Pre-adjust LR */ |
| mbed_official | 119:3921aeca8633 | 344 | SRSDB SP!, #Mode_ABT /* Save LR and SPRS to ABT mode stack */ |
| mbed_official | 119:3921aeca8633 | 345 | PUSH {R0-R4, R12} /* Save APCS corruptible registers to ABT mode stack */ |
| mbed_official | 119:3921aeca8633 | 346 | CLREX /* State of exclusive monitors unknown after taken data abort */ |
| mbed_official | 119:3921aeca8633 | 347 | MRC p15, 0, R0, c5, c0, 0 /* DFSR */ |
| mbed_official | 119:3921aeca8633 | 348 | MRC p15, 0, R1, c6, c0, 0 /* DFAR */ |
| mbed_official | 119:3921aeca8633 | 349 | |
| mbed_official | 119:3921aeca8633 | 350 | MOV R2, LR /* Set LR to third argument */ |
| mbed_official | 119:3921aeca8633 | 351 | |
| mbed_official | 119:3921aeca8633 | 352 | /* AND R12, SP, #4 */ /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 353 | MOV R3, SP /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 354 | AND R12, R3, #4 |
| mbed_official | 119:3921aeca8633 | 355 | SUB SP, SP, R12 /* Adjust stack */ |
| mbed_official | 119:3921aeca8633 | 356 | PUSH {R12, LR} /* Store stack adjustment and dummy LR */ |
| mbed_official | 119:3921aeca8633 | 357 | |
| mbed_official | 119:3921aeca8633 | 358 | BL CDAbtHandler |
| mbed_official | 119:3921aeca8633 | 359 | |
| mbed_official | 119:3921aeca8633 | 360 | POP {R12, LR} /* Get stack adjustment & discard dummy LR */ |
| mbed_official | 119:3921aeca8633 | 361 | ADD SP, SP, R12 /* Unadjust stack */ |
| mbed_official | 119:3921aeca8633 | 362 | |
| mbed_official | 119:3921aeca8633 | 363 | POP {R0-R4, R12} /* Restore stacked APCS registers */ |
| mbed_official | 119:3921aeca8633 | 364 | RFEFD SP! /* Return from exception */ |
| mbed_official | 119:3921aeca8633 | 365 | |
| mbed_official | 119:3921aeca8633 | 366 | FIQ_Handler: |
| mbed_official | 119:3921aeca8633 | 367 | /* An FIQ might occur between the dummy read and the real read of the GIC in IRQ_Handler, |
| mbed_official | 119:3921aeca8633 | 368 | * so if a real FIQ Handler is implemented, this will be needed before returning: |
| mbed_official | 119:3921aeca8633 | 369 | */ |
| mbed_official | 119:3921aeca8633 | 370 | /* LDR R1, =GICI_BASE |
| mbed_official | 119:3921aeca8633 | 371 | LDR R0, [R1, #ICCHPIR_OFFSET] ; Dummy Read ICCHPIR (GIC CPU Interface register) to avoid GIC 390 errata 801120 |
| mbed_official | 119:3921aeca8633 | 372 | */ |
| mbed_official | 119:3921aeca8633 | 373 | B . |
| mbed_official | 119:3921aeca8633 | 374 | |
| mbed_official | 119:3921aeca8633 | 375 | EXTERN SVC_Handler /* refer RTX function */ |
| mbed_official | 119:3921aeca8633 | 376 | |
| mbed_official | 119:3921aeca8633 | 377 | IRQ_Handler: |
| mbed_official | 119:3921aeca8633 | 378 | EXTERN IRQCount |
| mbed_official | 119:3921aeca8633 | 379 | EXTERN IRQTable |
| mbed_official | 119:3921aeca8633 | 380 | EXTERN IRQNestLevel |
| mbed_official | 119:3921aeca8633 | 381 | |
| mbed_official | 119:3921aeca8633 | 382 | /* prologue */ |
| mbed_official | 119:3921aeca8633 | 383 | SUB LR, LR, #4 /* Pre-adjust LR */ |
| mbed_official | 119:3921aeca8633 | 384 | SRSDB SP!, #Mode_SVC /* Save LR_IRQ and SPRS_IRQ to SVC mode stack */ |
| mbed_official | 119:3921aeca8633 | 385 | CPS #Mode_SVC /* Switch to SVC mode, to avoid a nested interrupt corrupting LR on a BL */ |
| mbed_official | 119:3921aeca8633 | 386 | PUSH {R0-R3, R12} /* Save remaining APCS corruptible registers to SVC stack */ |
| mbed_official | 119:3921aeca8633 | 387 | |
| mbed_official | 119:3921aeca8633 | 388 | /* AND R1, SP, #4 */ /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 389 | MOV R3, SP /* Ensure stack is 8-byte aligned */ |
| mbed_official | 119:3921aeca8633 | 390 | AND R1, R3, #4 |
| mbed_official | 119:3921aeca8633 | 391 | SUB SP, SP, R1 /* Adjust stack */ |
| mbed_official | 119:3921aeca8633 | 392 | PUSH {R1, LR} /* Store stack adjustment and LR_SVC to SVC stack */ |
| mbed_official | 119:3921aeca8633 | 393 | |
| mbed_official | 119:3921aeca8633 | 394 | LDR R0, =IRQNestLevel /* Get address of nesting counter */ |
| mbed_official | 119:3921aeca8633 | 395 | LDR R1, [R0] |
| mbed_official | 119:3921aeca8633 | 396 | ADD R1, R1, #1 /* Increment nesting counter */ |
| mbed_official | 119:3921aeca8633 | 397 | STR R1, [R0] |
| mbed_official | 119:3921aeca8633 | 398 | |
| mbed_official | 119:3921aeca8633 | 399 | /* identify and acknowledge interrupt */ |
| mbed_official | 119:3921aeca8633 | 400 | LDR R1, =GICI_BASE |
| mbed_official | 119:3921aeca8633 | 401 | LDR R0, [R1, #ICCHPIR_OFFSET] /* Dummy Read ICCHPIR (GIC CPU Interface register) to avoid GIC 390 errata 801120 */ |
| mbed_official | 119:3921aeca8633 | 402 | LDR R0, [R1, #ICCIAR_OFFSET] /* Read ICCIAR (GIC CPU Interface register) */ |
| mbed_official | 119:3921aeca8633 | 403 | DSB /* Ensure that interrupt acknowledge completes before re-enabling interrupts */ |
| mbed_official | 119:3921aeca8633 | 404 | |
| mbed_official | 119:3921aeca8633 | 405 | /* Workaround GIC 390 errata 733075 |
| mbed_official | 119:3921aeca8633 | 406 | * If the ID is not 0, then service the interrupt as normal. |
| mbed_official | 119:3921aeca8633 | 407 | * If the ID is 0 and active, then service interrupt ID 0 as normal. |
| mbed_official | 119:3921aeca8633 | 408 | * If the ID is 0 but not active, then the GIC CPU interface may be locked-up, so unlock it |
| mbed_official | 119:3921aeca8633 | 409 | * with a dummy write to ICDIPR0. This interrupt should be treated as spurious and not serviced. |
| mbed_official | 119:3921aeca8633 | 410 | */ |
| mbed_official | 119:3921aeca8633 | 411 | LDR R2, =GICD_BASE |
| mbed_official | 119:3921aeca8633 | 412 | LDR R3, =GIC_ERRATA_CHECK_1 |
| mbed_official | 119:3921aeca8633 | 413 | CMP R0, R3 |
| mbed_official | 119:3921aeca8633 | 414 | BEQ unlock_cpu |
| mbed_official | 119:3921aeca8633 | 415 | LDR R3, =GIC_ERRATA_CHECK_2 |
| mbed_official | 119:3921aeca8633 | 416 | CMP R0, R3 |
| mbed_official | 119:3921aeca8633 | 417 | BEQ unlock_cpu |
| mbed_official | 119:3921aeca8633 | 418 | CMP R0, #0 |
| mbed_official | 119:3921aeca8633 | 419 | BNE int_active /* If the ID is not 0, then service the interrupt */ |
| mbed_official | 119:3921aeca8633 | 420 | LDR R3, [R2, #ICDABR0_OFFSET] /* Get the interrupt state */ |
| mbed_official | 119:3921aeca8633 | 421 | TST R3, #1 |
| mbed_official | 119:3921aeca8633 | 422 | BNE int_active /* If active, then service the interrupt */ |
| mbed_official | 119:3921aeca8633 | 423 | unlock_cpu: |
| mbed_official | 119:3921aeca8633 | 424 | LDR R3, [R2, #ICDIPR0_OFFSET] /* Not active, so unlock the CPU interface */ |
| mbed_official | 119:3921aeca8633 | 425 | STR R3, [R2, #ICDIPR0_OFFSET] /* with a dummy write */ |
| mbed_official | 119:3921aeca8633 | 426 | DSB /* Ensure the write completes before continuing */ |
| mbed_official | 119:3921aeca8633 | 427 | B ret_irq /* Do not service the spurious interrupt */ |
| mbed_official | 119:3921aeca8633 | 428 | /* End workaround */ |
| mbed_official | 119:3921aeca8633 | 429 | |
| mbed_official | 119:3921aeca8633 | 430 | int_active: |
| mbed_official | 119:3921aeca8633 | 431 | LDR R2, =IRQCount /* Read number of IRQs */ |
| mbed_official | 119:3921aeca8633 | 432 | LDR R2, [R2] |
| mbed_official | 119:3921aeca8633 | 433 | CMP R0, R2 /* Clean up and return if no handler */ |
| mbed_official | 119:3921aeca8633 | 434 | BHS ret_irq /* In a single-processor system, spurious interrupt ID 1023 does not need any special handling */ |
| mbed_official | 119:3921aeca8633 | 435 | LDR R2, =IRQTable /* Get address of handler */ |
| mbed_official | 119:3921aeca8633 | 436 | LDR R2, [R2, R0, LSL #2] |
| mbed_official | 119:3921aeca8633 | 437 | CMP R2, #0 /* Clean up and return if handler address is 0 */ |
| mbed_official | 119:3921aeca8633 | 438 | BEQ ret_irq |
| mbed_official | 119:3921aeca8633 | 439 | PUSH {R0,R1} |
| mbed_official | 119:3921aeca8633 | 440 | |
| mbed_official | 119:3921aeca8633 | 441 | CPSIE i /* Now safe to re-enable interrupts */ |
| mbed_official | 119:3921aeca8633 | 442 | BLX R2 /* Call handler. R0 will be IRQ number */ |
| mbed_official | 119:3921aeca8633 | 443 | CPSID i /* Disable interrupts again */ |
| mbed_official | 119:3921aeca8633 | 444 | |
| mbed_official | 119:3921aeca8633 | 445 | /* write EOIR (GIC CPU Interface register) */ |
| mbed_official | 119:3921aeca8633 | 446 | POP {R0,R1} |
| mbed_official | 119:3921aeca8633 | 447 | DSB /* Ensure that interrupt source is cleared before we write the EOIR */ |
| mbed_official | 119:3921aeca8633 | 448 | ret_irq: |
| mbed_official | 119:3921aeca8633 | 449 | /* epilogue */ |
| mbed_official | 119:3921aeca8633 | 450 | STR R0, [R1, #ICCEOIR_OFFSET] |
| mbed_official | 119:3921aeca8633 | 451 | |
| mbed_official | 119:3921aeca8633 | 452 | LDR R0, =IRQNestLevel /* Get address of nesting counter */ |
| mbed_official | 119:3921aeca8633 | 453 | LDR R1, [R0] |
| mbed_official | 119:3921aeca8633 | 454 | SUB R1, R1, #1 /* Decrement nesting counter */ |
| mbed_official | 119:3921aeca8633 | 455 | STR R1, [R0] |
| mbed_official | 119:3921aeca8633 | 456 | |
| mbed_official | 119:3921aeca8633 | 457 | POP {R1, LR} /* Get stack adjustment and restore LR_SVC */ |
| mbed_official | 119:3921aeca8633 | 458 | ADD SP, SP, R1 /* Unadjust stack */ |
| mbed_official | 119:3921aeca8633 | 459 | |
| mbed_official | 119:3921aeca8633 | 460 | POP {R0-R3,R12} /* Restore stacked APCS registers */ |
| mbed_official | 119:3921aeca8633 | 461 | RFEFD SP! /* Return from exception */ |
| mbed_official | 119:3921aeca8633 | 462 | ;;; |
| mbed_official | 119:3921aeca8633 | 463 | ;;; Add more initialization here |
| mbed_official | 119:3921aeca8633 | 464 | ;;; |
| mbed_official | 119:3921aeca8633 | 465 | FPUEnable: |
| mbed_official | 119:3921aeca8633 | 466 | ARM |
| mbed_official | 119:3921aeca8633 | 467 | |
| mbed_official | 119:3921aeca8633 | 468 | //Permit access to VFP registers by modifying CPACR |
| mbed_official | 119:3921aeca8633 | 469 | MRC p15,0,R1,c1,c0,2 |
| mbed_official | 119:3921aeca8633 | 470 | ORR R1,R1,#0x00F00000 |
| mbed_official | 119:3921aeca8633 | 471 | MCR p15,0,R1,c1,c0,2 |
| mbed_official | 119:3921aeca8633 | 472 | |
| mbed_official | 119:3921aeca8633 | 473 | //Enable VFP |
| mbed_official | 119:3921aeca8633 | 474 | VMRS R1,FPEXC |
| mbed_official | 119:3921aeca8633 | 475 | ORR R1,R1,#0x40000000 |
| mbed_official | 119:3921aeca8633 | 476 | VMSR FPEXC,R1 |
| mbed_official | 119:3921aeca8633 | 477 | |
| mbed_official | 119:3921aeca8633 | 478 | //Initialise VFP registers to 0 |
| mbed_official | 119:3921aeca8633 | 479 | MOV R2,#0 |
| mbed_official | 119:3921aeca8633 | 480 | VMOV D0, R2,R2 |
| mbed_official | 119:3921aeca8633 | 481 | VMOV D1, R2,R2 |
| mbed_official | 119:3921aeca8633 | 482 | VMOV D2, R2,R2 |
| mbed_official | 119:3921aeca8633 | 483 | VMOV D3, R2,R2 |
| mbed_official | 119:3921aeca8633 | 484 | VMOV D4, R2,R2 |
| mbed_official | 119:3921aeca8633 | 485 | VMOV D5, R2,R2 |
| mbed_official | 119:3921aeca8633 | 486 | VMOV D6, R2,R2 |
| mbed_official | 119:3921aeca8633 | 487 | VMOV D7, R2,R2 |
| mbed_official | 119:3921aeca8633 | 488 | VMOV D8, R2,R2 |
| mbed_official | 119:3921aeca8633 | 489 | VMOV D9, R2,R2 |
| mbed_official | 119:3921aeca8633 | 490 | VMOV D10,R2,R2 |
| mbed_official | 119:3921aeca8633 | 491 | VMOV D11,R2,R2 |
| mbed_official | 119:3921aeca8633 | 492 | VMOV D12,R2,R2 |
| mbed_official | 119:3921aeca8633 | 493 | VMOV D13,R2,R2 |
| mbed_official | 119:3921aeca8633 | 494 | VMOV D14,R2,R2 |
| mbed_official | 119:3921aeca8633 | 495 | VMOV D15,R2,R2 |
| mbed_official | 119:3921aeca8633 | 496 | |
| mbed_official | 119:3921aeca8633 | 497 | //Initialise FPSCR to a known state |
| mbed_official | 119:3921aeca8633 | 498 | VMRS R2,FPSCR |
| mbed_official | 119:3921aeca8633 | 499 | LDR R3,=0x00086060 //Mask off all bits that do not have to be preserved. Non-preserved bits can/should be zero. |
| mbed_official | 119:3921aeca8633 | 500 | AND R2,R2,R3 |
| mbed_official | 119:3921aeca8633 | 501 | VMSR FPSCR,R2 |
| mbed_official | 119:3921aeca8633 | 502 | |
| mbed_official | 119:3921aeca8633 | 503 | BX LR |
| mbed_official | 119:3921aeca8633 | 504 | |
| mbed_official | 119:3921aeca8633 | 505 | END |
