diff options
Diffstat (limited to 'c/src')
-rw-r--r-- | c/src/lib/libbsp/arm/shared/start/start.S | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/c/src/lib/libbsp/arm/shared/start/start.S b/c/src/lib/libbsp/arm/shared/start/start.S index 096e9bd513..63b32501f5 100644 --- a/c/src/lib/libbsp/arm/shared/start/start.S +++ b/c/src/lib/libbsp/arm/shared/start/start.S @@ -266,6 +266,8 @@ twiddle: #elif defined(ARM_MULTILIB_ARCH_V7M) +#include <rtems/score/armv7m.h> + .syntax unified .extern bsp_stack_main_end @@ -300,6 +302,19 @@ bsp_start_vector_table_end: _start: +#ifdef ARM_MULTILIB_VFP + /* + * Enable CP10 and CP11 coprocessors for privileged and user mode in + * CPACR (bits 20-23). Ensure that write to register completes. + */ + ldr r0, =ARMV7M_CPACR + ldr r1, [r0] + orr r1, r1, #(0xf << 20) + str r1, [r0] + dsb + isb +#endif + ldr sp, =bsp_stack_main_end ldr lr, =bsp_start_hook_0_done + 1 b bsp_start_hook_0 |