aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips
diff options
context:
space:
mode:
authorMaciej W. Rozycki <macro@linux-mips.org>2005-06-13 16:12:01 -0400
committerRalf Baechle <ralf@linux-mips.org>2005-10-29 14:31:21 -0400
commitd925c262dd8bee2202b0d1b85ce0b332f48dd34b (patch)
treed62cded4387504ff0d4db5e737261f5fd50c1af4 /arch/mips
parent9678e28b1ab931c35567cb15927b8c5e474934c3 (diff)
Fill R3k load delay slots properly.
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips')
-rw-r--r--arch/mips/mm/tlbex.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c
index 2e90c1d2d053..68d24b80053b 100644
--- a/arch/mips/mm/tlbex.c
+++ b/arch/mips/mm/tlbex.c
@@ -1486,6 +1486,7 @@ static void __init build_r3000_tlb_load_handler(void)
1486 1486
1487 build_r3000_tlbchange_handler_head(&p, K0, K1); 1487 build_r3000_tlbchange_handler_head(&p, K0, K1);
1488 build_pte_present(&p, &l, &r, K0, K1, label_nopage_tlbl); 1488 build_pte_present(&p, &l, &r, K0, K1, label_nopage_tlbl);
1489 i_nop(&p); /* load delay */
1489 build_make_valid(&p, &r, K0, K1); 1490 build_make_valid(&p, &r, K0, K1);
1490 build_r3000_pte_reload(&p, K1); 1491 build_r3000_pte_reload(&p, K1);
1491 build_r3000_tlb_write(&p, &l, &r, K0); 1492 build_r3000_tlb_write(&p, &l, &r, K0);
@@ -1527,6 +1528,7 @@ static void __init build_r3000_tlb_store_handler(void)
1527 1528
1528 build_r3000_tlbchange_handler_head(&p, K0, K1); 1529 build_r3000_tlbchange_handler_head(&p, K0, K1);
1529 build_pte_writable(&p, &l, &r, K0, K1, label_nopage_tlbs); 1530 build_pte_writable(&p, &l, &r, K0, K1, label_nopage_tlbs);
1531 i_nop(&p); /* load delay */
1530 build_make_write(&p, &r, K0, K1); 1532 build_make_write(&p, &r, K0, K1);
1531 build_r3000_pte_reload(&p, K1); 1533 build_r3000_pte_reload(&p, K1);
1532 build_r3000_tlb_write(&p, &l, &r, K0); 1534 build_r3000_tlb_write(&p, &l, &r, K0);
@@ -1568,6 +1570,7 @@ static void __init build_r3000_tlb_modify_handler(void)
1568 1570
1569 build_r3000_tlbchange_handler_head(&p, K0, K1); 1571 build_r3000_tlbchange_handler_head(&p, K0, K1);
1570 build_pte_modifiable(&p, &l, &r, K0, K1, label_nopage_tlbm); 1572 build_pte_modifiable(&p, &l, &r, K0, K1, label_nopage_tlbm);
1573 i_nop(&p); /* load delay */
1571 build_make_write(&p, &r, K0, K1); 1574 build_make_write(&p, &r, K0, K1);
1572 build_r3000_pte_reload(&p, K1); 1575 build_r3000_pte_reload(&p, K1);
1573 i_tlbwi(&p); 1576 i_tlbwi(&p);