diff options
author | Maciej W. Rozycki <macro@linux-mips.org> | 2005-06-13 16:12:01 -0400 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2005-10-29 14:31:21 -0400 |
commit | d925c262dd8bee2202b0d1b85ce0b332f48dd34b (patch) | |
tree | d62cded4387504ff0d4db5e737261f5fd50c1af4 /arch/mips | |
parent | 9678e28b1ab931c35567cb15927b8c5e474934c3 (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.c | 3 |
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); |