Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=b9338a78fc21e980d33c58b31f3bb37cd48a68f6
Commit:     b9338a78fc21e980d33c58b31f3bb37cd48a68f6
Parent:     a53d6fb83efc75bbd7876459e6e1291c4925103d
Author:     Tzachi Perelstein <[EMAIL PROTECTED]>
AuthorDate: Sun Sep 9 14:24:59 2007 +0100
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Thu Sep 13 15:10:27 2007 +0100

    [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 <[EMAIL PROTECTED]>
---
 arch/arm/vfp/vfpmodule.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c
index 04ddab2..eea3f50 100644
--- a/arch/arm/vfp/vfpmodule.c
+++ b/arch/arm/vfp/vfpmodule.c
@@ -323,6 +323,7 @@ static int __init vfp_init(void)
         * we just need to read the VFPSID register.
         */
        vfp_vector = vfp_testing_entry;
+       barrier();
        vfpsid = fmrx(FPSID);
        barrier();
        vfp_vector = vfp_null_entry;
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to