|
@@ -28,9 +28,11 @@
|
|
|
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 );
|
|
|
}
|