[ARM] 4567/1: Fix 'Oops - undefined instruction' when CONFIG_VFP=y on non VFP device
vfp_init() takes care of the condition when CONFIG_VFP=y but no real VFP device exists. However, when this condition is true, a compiler might misplace code lines in a way that will break this support. (To be more specific - fmrx(FPSID) might be executed before vfp_testing_entry assignment, which will end up with Oops - undefined instruction). This patch adds a barrier() to guarantee the right execution ordering. Signed-off-by: Assaf Hoffman Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
a53d6fb83e
commit
b9338a78fc
1 changed files with 1 additions and 0 deletions
|
@ -323,6 +323,7 @@ static int __init vfp_init(void)
|
||||||
* we just need to read the VFPSID register.
|
* we just need to read the VFPSID register.
|
||||||
*/
|
*/
|
||||||
vfp_vector = vfp_testing_entry;
|
vfp_vector = vfp_testing_entry;
|
||||||
|
barrier();
|
||||||
vfpsid = fmrx(FPSID);
|
vfpsid = fmrx(FPSID);
|
||||||
barrier();
|
barrier();
|
||||||
vfp_vector = vfp_null_entry;
|
vfp_vector = vfp_null_entry;
|
||||||
|
|
Loading…
Reference in a new issue