Changeset 4512d7e in mainline for arch/mips32/src/mm/tlb.c
- Timestamp:
- 2006-01-19T22:17:47Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 6461d67c
- Parents:
- 64c44e8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
arch/mips32/src/mm/tlb.c
r64c44e8 r4512d7e 28 28 29 29 #include <arch/mm/tlb.h> 30 #include < arch/mm/asid.h>30 #include <mm/asid.h> 31 31 #include <mm/tlb.h> 32 32 #include <mm/page.h> … … 495 495 } 496 496 497 /** Invalidate TLB entr y for specified page belonging to specified address space.497 /** Invalidate TLB entries for specified page range belonging to specified address space. 498 498 * 499 499 * @param asid Address space identifier. 500 * @param page Page whose TLB entry is to be invalidated. 501 */ 502 void tlb_invalidate_page(asid_t asid, __address page) 503 { 500 * @param page First page whose TLB entry is to be invalidated. 501 * @param cnt Number of entries to invalidate. 502 */ 503 void tlb_invalidate_pages(asid_t asid, __address page, count_t cnt) 504 { 505 int i; 504 506 ipl_t ipl; 505 507 entry_lo_t lo0, lo1; … … 512 514 ipl = interrupts_disable(); 513 515 514 hi.value = 0; 515 prepare_entry_hi(&hi, asid, page); 516 cp0_entry_hi_write(hi.value); 517 518 tlbp(); 519 index.value = cp0_index_read(); 520 521 if (!index.p) { 522 /* Entry was found, index register contains valid index. */ 523 tlbr(); 524 525 lo0.value = cp0_entry_lo0_read(); 526 lo1.value = cp0_entry_lo1_read(); 527 528 lo0.v = 0; 529 lo1.v = 0; 530 531 cp0_entry_lo0_write(lo0.value); 532 cp0_entry_lo1_write(lo1.value); 533 534 tlbwi(); 516 for (i = 0; i < cnt; i++) { 517 hi.value = 0; 518 prepare_entry_hi(&hi, asid, page + i * PAGE_SIZE); 519 cp0_entry_hi_write(hi.value); 520 521 tlbp(); 522 index.value = cp0_index_read(); 523 524 if (!index.p) { 525 /* Entry was found, index register contains valid index. */ 526 tlbr(); 527 528 lo0.value = cp0_entry_lo0_read(); 529 lo1.value = cp0_entry_lo1_read(); 530 531 lo0.v = 0; 532 lo1.v = 0; 533 534 cp0_entry_lo0_write(lo0.value); 535 cp0_entry_lo1_write(lo1.value); 536 537 tlbwi(); 538 } 535 539 } 536 540
Note:
See TracChangeset
for help on using the changeset viewer.