Merge remote-tracking branch 'lsk/v3.10/topic/arm64-perf' into linux-linaro-lsk
[firefly-linux-kernel-4.4.55.git] / arch / m68k / mm / hwtest.c
index 2c7dde3c6430fc3bbfe1de8d812253ee90173d3c..2a5259fd23ebc532bfc73b6d54ec2d800cd95af0 100644 (file)
 int hwreg_present( volatile void *regp )
 {
     int        ret = 0;
+    unsigned long flags;
     long       save_sp, save_vbr;
     long       tmp_vectors[3];
 
+    local_irq_save(flags);
     __asm__ __volatile__
        (       "movec  %/vbr,%2\n\t"
                "movel  #Lberr1,%4@(8)\n\t"
@@ -46,6 +48,7 @@ int hwreg_present( volatile void *regp )
                : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr)
                : "a" (regp), "a" (tmp_vectors)
                 );
+    local_irq_restore(flags);
 
     return( ret );
 }
@@ -58,9 +61,11 @@ EXPORT_SYMBOL(hwreg_present);
 int hwreg_write( volatile void *regp, unsigned short val )
 {
        int             ret;
+       unsigned long flags;
        long    save_sp, save_vbr;
        long    tmp_vectors[3];
 
+       local_irq_save(flags);
        __asm__ __volatile__
        (       "movec  %/vbr,%2\n\t"
                "movel  #Lberr2,%4@(8)\n\t"
@@ -78,6 +83,7 @@ int hwreg_write( volatile void *regp, unsigned short val )
                : "=&d" (ret), "=&r" (save_sp), "=&r" (save_vbr)
                : "a" (regp), "a" (tmp_vectors), "g" (val)
        );
+       local_irq_restore(flags);
 
        return( ret );
 }