Skip to content

Commit 80bd814

Browse files
committed
arch: arm: cortex_r: Initialise VFP D32 registers for DCLS
This commit updates the Cortex-R reset routine to initialise (synchronise) the VFP D16-D31 registers when Dual-redundant Core Lock-step (DCLS) is enabled. Signed-off-by: Stephanos Ioannidis <[email protected]>
1 parent 7f44e28 commit 80bd814

File tree

1 file changed

+24
-3
lines changed
  • arch/arm/core/aarch32/cortex_a_r

1 file changed

+24
-3
lines changed

arch/arm/core/aarch32/cortex_a_r/reset.S

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ EL1_Reset_Handler:
140140
mov r13, #0 /* r13_sys */
141141
mov r14, #0 /* r14_sys */
142142

143-
#if defined(CONFIG_FPU)
143+
#if defined(CONFIG_FPU) && defined(CONFIG_CPU_HAS_VFP)
144144
/*
145145
* Initialise FPU registers to a defined state.
146146
*/
@@ -152,7 +152,7 @@ EL1_Reset_Handler:
152152

153153
/* Enable VFP */
154154
mov r0, #FPEXC_EN
155-
fmxr fpexc, r0
155+
vmsr fpexc, r0
156156

157157
/* Initialise VFP registers */
158158
fmdrr d0, r1, r1
@@ -171,7 +171,28 @@ EL1_Reset_Handler:
171171
fmdrr d13, r1, r1
172172
fmdrr d14, r1, r1
173173
fmdrr d15, r1, r1
174-
#endif /* CONFIG_FPU */
174+
#if defined(CONFIG_VFP_FEATURE_REGS_S64_D32)
175+
fmdrr d16, r1, r1
176+
fmdrr d17, r1, r1
177+
fmdrr d18, r1, r1
178+
fmdrr d19, r1, r1
179+
fmdrr d20, r1, r1
180+
fmdrr d21, r1, r1
181+
fmdrr d22, r1, r1
182+
fmdrr d23, r1, r1
183+
fmdrr d24, r1, r1
184+
fmdrr d25, r1, r1
185+
fmdrr d26, r1, r1
186+
fmdrr d27, r1, r1
187+
fmdrr d28, r1, r1
188+
fmdrr d29, r1, r1
189+
fmdrr d30, r1, r1
190+
fmdrr d31, r1, r1
191+
#endif /* CONFIG_VFP_FEATURE_REGS_S64_D32 */
192+
193+
vmsr fpscr, r1
194+
vmsr fpexc, r1
195+
#endif /* CONFIG_FPU && CONFIG_CPU_HAS_VFP */
175196

176197
#endif /* CONFIG_CPU_HAS_DCLS */
177198

0 commit comments

Comments
 (0)