|
@@ -1274,3 +1274,125 @@ do { \
|
|
" .set push \n" \
|
|
" .set push \n" \
|
|
" .set noat \n" \
|
|
" .set noat \n" \
|
|
" # mflo %0, $ac0 \n" \
|
|
" # mflo %0, $ac0 \n" \
|
|
|
|
+ " .word 0x00000812 \n" \
|
|
|
|
+ " move %0, $1 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : "=r" (__treg)); \
|
|
|
|
+ __treg; \
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+#define mflo1() \
|
|
|
|
+({ \
|
|
|
|
+ unsigned long __treg; \
|
|
|
|
+ \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " # mflo %0, $ac1 \n" \
|
|
|
|
+ " .word 0x00200812 \n" \
|
|
|
|
+ " move %0, $1 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : "=r" (__treg)); \
|
|
|
|
+ __treg; \
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+#define mflo2() \
|
|
|
|
+({ \
|
|
|
|
+ unsigned long __treg; \
|
|
|
|
+ \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " # mflo %0, $ac2 \n" \
|
|
|
|
+ " .word 0x00400812 \n" \
|
|
|
|
+ " move %0, $1 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : "=r" (__treg)); \
|
|
|
|
+ __treg; \
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+#define mflo3() \
|
|
|
|
+({ \
|
|
|
|
+ unsigned long __treg; \
|
|
|
|
+ \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " # mflo %0, $ac3 \n" \
|
|
|
|
+ " .word 0x00600812 \n" \
|
|
|
|
+ " move %0, $1 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : "=r" (__treg)); \
|
|
|
|
+ __treg; \
|
|
|
|
+})
|
|
|
|
+
|
|
|
|
+#define mthi0(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " move $1, %0 \n" \
|
|
|
|
+ " # mthi $1, $ac0 \n" \
|
|
|
|
+ " .word 0x00200011 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : \
|
|
|
|
+ : "r" (x)); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define mthi1(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " move $1, %0 \n" \
|
|
|
|
+ " # mthi $1, $ac1 \n" \
|
|
|
|
+ " .word 0x00200811 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : \
|
|
|
|
+ : "r" (x)); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define mthi2(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " move $1, %0 \n" \
|
|
|
|
+ " # mthi $1, $ac2 \n" \
|
|
|
|
+ " .word 0x00201011 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : \
|
|
|
|
+ : "r" (x)); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define mthi3(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " move $1, %0 \n" \
|
|
|
|
+ " # mthi $1, $ac3 \n" \
|
|
|
|
+ " .word 0x00201811 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : \
|
|
|
|
+ : "r" (x)); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define mtlo0(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|
|
|
|
+ " move $1, %0 \n" \
|
|
|
|
+ " # mtlo $1, $ac0 \n" \
|
|
|
|
+ " .word 0x00200013 \n" \
|
|
|
|
+ " .set pop \n" \
|
|
|
|
+ : \
|
|
|
|
+ : "r" (x)); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+#define mtlo1(x) \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ " .set push \n" \
|
|
|
|
+ " .set noat \n" \
|