|
@@ -31,9 +31,15 @@
|
|
#define __mtc0_tlbw_hazard \
|
|
#define __mtc0_tlbw_hazard \
|
|
___ehb
|
|
___ehb
|
|
|
|
|
|
|
|
+#define __mtc0_tlbr_hazard \
|
|
|
|
+ ___ehb
|
|
|
|
+
|
|
#define __tlbw_use_hazard \
|
|
#define __tlbw_use_hazard \
|
|
___ehb
|
|
___ehb
|
|
|
|
|
|
|
|
+#define __tlb_read_hazard \
|
|
|
|
+ ___ehb
|
|
|
|
+
|
|
#define __tlb_probe_hazard \
|
|
#define __tlb_probe_hazard \
|
|
___ehb
|
|
___ehb
|
|
|
|
|
|
@@ -80,12 +86,23 @@ do { \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ehb
|
|
___ehb
|
|
|
|
|
|
|
|
+#define __mtc0_tlbr_hazard \
|
|
|
|
+ ___ssnop; \
|
|
|
|
+ ___ssnop; \
|
|
|
|
+ ___ehb
|
|
|
|
+
|
|
#define __tlbw_use_hazard \
|
|
#define __tlbw_use_hazard \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ehb
|
|
___ehb
|
|
|
|
|
|
|
|
+#define __tlb_read_hazard \
|
|
|
|
+ ___ssnop; \
|
|
|
|
+ ___ssnop; \
|
|
|
|
+ ___ssnop; \
|
|
|
|
+ ___ehb
|
|
|
|
+
|
|
#define __tlb_probe_hazard \
|
|
#define __tlb_probe_hazard \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
___ssnop; \
|
|
@@ -147,8 +164,12 @@ do { \
|
|
|
|
|
|
#define __mtc0_tlbw_hazard
|
|
#define __mtc0_tlbw_hazard
|
|
|
|
|
|
|
|
+#define __mtc0_tlbr_hazard
|
|
|
|
+
|
|
#define __tlbw_use_hazard
|
|
#define __tlbw_use_hazard
|
|
|
|
|
|
|
|
+#define __tlb_read_hazard
|
|
|
|
+
|
|
#define __tlb_probe_hazard
|
|
#define __tlb_probe_hazard
|
|
|
|
|
|
#define __irq_enable_hazard
|
|
#define __irq_enable_hazard
|
|
@@ -166,8 +187,12 @@ do { \
|
|
*/
|
|
*/
|
|
#define __mtc0_tlbw_hazard
|
|
#define __mtc0_tlbw_hazard
|
|
|
|
|
|
|
|
+#define __mtc0_tlbr_hazard
|
|
|
|
+
|
|
#define __tlbw_use_hazard
|
|
#define __tlbw_use_hazard
|
|
|
|
|
|
|
|
+#define __tlb_read_hazard
|
|
|
|
+
|
|
#define __tlb_probe_hazard
|
|
#define __tlb_probe_hazard
|
|
|
|
|
|
#define __irq_enable_hazard
|
|
#define __irq_enable_hazard
|
|
@@ -196,11 +221,20 @@ do { \
|
|
nop; \
|
|
nop; \
|
|
nop
|
|
nop
|
|
|
|
|
|
|
|
+#define __mtc0_tlbr_hazard \
|
|
|
|
+ nop; \
|
|
|
|
+ nop
|
|
|
|
+
|
|
#define __tlbw_use_hazard \
|
|
#define __tlbw_use_hazard \
|
|
nop; \
|
|
nop; \
|
|
nop; \
|
|
nop; \
|
|
nop
|
|
nop
|
|
|
|
|
|
|
|
+#define __tlb_read_hazard \
|
|
|
|
+ nop; \
|
|
|
|
+ nop; \
|
|
|
|
+ nop
|
|
|
|
+
|
|
#define __tlb_probe_hazard \
|
|
#define __tlb_probe_hazard \
|
|
nop; \
|
|
nop; \
|
|
nop; \
|
|
nop; \
|
|
@@ -267,7 +301,9 @@ do { \
|
|
#define _ssnop ___ssnop
|
|
#define _ssnop ___ssnop
|
|
#define _ehb ___ehb
|
|
#define _ehb ___ehb
|
|
#define mtc0_tlbw_hazard __mtc0_tlbw_hazard
|
|
#define mtc0_tlbw_hazard __mtc0_tlbw_hazard
|
|
|
|
+#define mtc0_tlbr_hazard __mtc0_tlbr_hazard
|
|
#define tlbw_use_hazard __tlbw_use_hazard
|
|
#define tlbw_use_hazard __tlbw_use_hazard
|
|
|
|
+#define tlb_read_hazard __tlb_read_hazard
|
|
#define tlb_probe_hazard __tlb_probe_hazard
|
|
#define tlb_probe_hazard __tlb_probe_hazard
|
|
#define irq_enable_hazard __irq_enable_hazard
|
|
#define irq_enable_hazard __irq_enable_hazard
|
|
#define irq_disable_hazard __irq_disable_hazard
|
|
#define irq_disable_hazard __irq_disable_hazard
|
|
@@ -300,6 +336,14 @@ do { \
|
|
} while (0)
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
|
|
+#define mtc0_tlbr_hazard() \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ __stringify(__mtc0_tlbr_hazard) \
|
|
|
|
+ ); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+
|
|
#define tlbw_use_hazard() \
|
|
#define tlbw_use_hazard() \
|
|
do { \
|
|
do { \
|
|
__asm__ __volatile__( \
|
|
__asm__ __volatile__( \
|
|
@@ -308,6 +352,14 @@ do { \
|
|
} while (0)
|
|
} while (0)
|
|
|
|
|
|
|
|
|
|
|
|
+#define tlb_read_hazard() \
|
|
|
|
+do { \
|
|
|
|
+ __asm__ __volatile__( \
|
|
|
|
+ __stringify(__tlb_read_hazard) \
|
|
|
|
+ ); \
|
|
|
|
+} while (0)
|
|
|
|
+
|
|
|
|
+
|
|
#define tlb_probe_hazard() \
|
|
#define tlb_probe_hazard() \
|
|
do { \
|
|
do { \
|
|
__asm__ __volatile__( \
|
|
__asm__ __volatile__( \
|