ARCv2: fix local_save_flags
authorVineet Gupta <vgupta@synopsys.com>
Fri, 30 Sep 2016 20:27:25 +0000 (13:27 -0700)
committerVineet Gupta <vgupta@synopsys.com>
Fri, 30 Sep 2016 21:48:25 +0000 (14:48 -0700)
Commit d9676fa152c83b ("ARCv2: Enable LOCKDEP"), changed
local_save_flags() to not return raw STATUS32 but encoded in the form
such that it could be fed directly to CLRI/SETI instructions.
However the STATUS32.E[] was not captured correctly as it corresponds to
bits [4:1] in the register and not [3:0]

Fixes: d9676fa152c83b ("ARCv2: Enable LOCKDEP")
Cc: Evgeny Voevodin <evgeny.voevodin@intel.com>
Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
arch/arc/include/asm/irqflags-arcv2.h

index d1ec7f6..e880dfa 100644 (file)
@@ -112,7 +112,7 @@ static inline long arch_local_save_flags(void)
         */
        temp = (1 << 5) |
                ((!!(temp & STATUS_IE_MASK)) << CLRI_STATUS_IE_BIT) |
-               (temp & CLRI_STATUS_E_MASK);
+               ((temp >> 1) & CLRI_STATUS_E_MASK);
        return temp;
 }