|
@@ -1155,36 +1155,26 @@ do { \
|
|
|
: "=r" (__res)); \
|
|
|
__res;})
|
|
|
|
|
|
+#ifdef HAVE_AS_DSP
|
|
|
#define rddsp(mask) \
|
|
|
({ \
|
|
|
- unsigned int __res; \
|
|
|
+ unsigned int __dspctl; \
|
|
|
\
|
|
|
__asm__ __volatile__( \
|
|
|
- " .set push \n" \
|
|
|
- " .set noat \n" \
|
|
|
- " # rddsp $1, %x1 \n" \
|
|
|
- " .word 0x7c000cb8 | (%x1 << 16) \n" \
|
|
|
- " move %0, $1 \n" \
|
|
|
- " .set pop \n" \
|
|
|
- : "=r" (__res) \
|
|
|
+ " rddsp %0, %x1 \n" \
|
|
|
+ : "=r" (__dspctl) \
|
|
|
: "i" (mask)); \
|
|
|
- __res; \
|
|
|
+ __dspctl; \
|
|
|
})
|
|
|
|
|
|
#define wrdsp(val, mask) \
|
|
|
do { \
|
|
|
__asm__ __volatile__( \
|
|
|
- " .set push \n" \
|
|
|
- " .set noat \n" \
|
|
|
- " move $1, %0 \n" \
|
|
|
- " # wrdsp $1, %x1 \n" \
|
|
|
- " .word 0x7c2004f8 | (%x1 << 11) \n" \
|
|
|
- " .set pop \n" \
|
|
|
- : \
|
|
|
+ " wrdsp %0, %x1 \n" \
|
|
|
+ : \
|
|
|
: "r" (val), "i" (mask)); \
|
|
|
} while (0)
|
|
|
|
|
|
-#if 0 /* Need DSP ASE capable assembler ... */
|
|
|
#define mflo0() ({ long mflo0; __asm__("mflo %0, $ac0" : "=r" (mflo0)); mflo0;})
|
|
|
#define mflo1() ({ long mflo1; __asm__("mflo %0, $ac1" : "=r" (mflo1)); mflo1;})
|
|
|
#define mflo2() ({ long mflo2; __asm__("mflo %0, $ac2" : "=r" (mflo2)); mflo2;})
|
|
@@ -1207,6 +1197,35 @@ do { \
|
|
|
|
|
|
#else
|
|
|
|
|
|
+#define rddsp(mask) \
|
|
|
+({ \
|
|
|
+ unsigned int __res; \
|
|
|
+ \
|
|
|
+ __asm__ __volatile__( \
|
|
|
+ " .set push \n" \
|
|
|
+ " .set noat \n" \
|
|
|
+ " # rddsp $1, %x1 \n" \
|
|
|
+ " .word 0x7c000cb8 | (%x1 << 16) \n" \
|
|
|
+ " move %0, $1 \n" \
|
|
|
+ " .set pop \n" \
|
|
|
+ : "=r" (__res) \
|
|
|
+ : "i" (mask)); \
|
|
|
+ __res; \
|
|
|
+})
|
|
|
+
|
|
|
+#define wrdsp(val, mask) \
|
|
|
+do { \
|
|
|
+ __asm__ __volatile__( \
|
|
|
+ " .set push \n" \
|
|
|
+ " .set noat \n" \
|
|
|
+ " move $1, %0 \n" \
|
|
|
+ " # wrdsp $1, %x1 \n" \
|
|
|
+ " .word 0x7c2004f8 | (%x1 << 11) \n" \
|
|
|
+ " .set pop \n" \
|
|
|
+ : \
|
|
|
+ : "r" (val), "i" (mask)); \
|
|
|
+} while (0)
|
|
|
+
|
|
|
#define mfhi0() \
|
|
|
({ \
|
|
|
unsigned long __treg; \
|