Changeset a35b458 in mainline for kernel/arch/sparc64/src/mm/sun4u/tlb.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/sparc64/src/mm/sun4u/tlb.c
r3061bc1 ra35b458 178 178 tag.context = t->as->asid; 179 179 tag.vpn = pg.vpn; 180 180 181 181 itlb_tag_access_write(tag.value); 182 182 183 183 data.value = 0; 184 184 data.v = true; … … 190 190 data.w = false; 191 191 data.g = t->g; 192 192 193 193 itlb_data_in_write(data.value); 194 194 } … … 353 353 tlb_data_t d; 354 354 tlb_tag_read_reg_t t; 355 355 356 356 printf("I-TLB contents:\n"); 357 357 for (i = 0; i < ITLB_ENTRY_COUNT; i++) { … … 377 377 tlb_data_t d; 378 378 tlb_tag_read_reg_t t; 379 379 380 380 printf("TLB_ISMALL contents:\n"); 381 381 for (i = 0; i < tlb_ismall_size(); i++) { … … 384 384 print_tlb_entry(i, t, d); 385 385 } 386 386 387 387 printf("TLB_IBIG contents:\n"); 388 388 for (i = 0; i < tlb_ibig_size(); i++) { … … 391 391 print_tlb_entry(i, t, d); 392 392 } 393 393 394 394 printf("TLB_DSMALL contents:\n"); 395 395 for (i = 0; i < tlb_dsmall_size(); i++) { … … 398 398 print_tlb_entry(i, t, d); 399 399 } 400 400 401 401 printf("TLB_DBIG_1 contents:\n"); 402 402 for (i = 0; i < tlb_dbig_size(); i++) { … … 405 405 print_tlb_entry(i, t, d); 406 406 } 407 407 408 408 printf("TLB_DBIG_2 contents:\n"); 409 409 for (i = 0; i < tlb_dbig_size(); i++) { … … 423 423 sfsr.value = dtlb_sfsr_read(); 424 424 sfar = dtlb_sfar_read(); 425 425 426 426 #if defined (US) 427 427 printf("DTLB SFSR: asi=%#x, ft=%#x, e=%d, ct=%d, pr=%d, w=%d, ow=%d, " … … 433 433 sfsr.e, sfsr.ct, sfsr.pr, sfsr.w, sfsr.ow, sfsr.fv); 434 434 #endif 435 435 436 436 printf("DTLB SFAR: address=%p\n", (void *) sfar); 437 437 438 438 dtlb_sfsr_write(0); 439 439 } … … 446 446 sfsr.value = dtlb_sfsr_read(); 447 447 sfar = dtlb_sfar_read(); 448 448 449 449 #if defined (US) 450 450 printf("DTLB SFSR: asi=%#x, ft=%#x, e=%d, ct=%d, pr=%d, w=%d, ow=%d, " … … 456 456 sfsr.e, sfsr.ct, sfsr.pr, sfsr.w, sfsr.ow, sfsr.fv); 457 457 #endif 458 458 459 459 printf("DTLB SFAR: address=%p\n", (void *) sfar); 460 460 461 461 dtlb_sfsr_write(0); 462 462 } … … 467 467 { 468 468 int i; 469 469 470 470 /* 471 471 * Walk all ITLB and DTLB entries and remove all unlocked mappings. … … 521 521 { 522 522 tlb_context_reg_t pc_save, ctx; 523 523 524 524 /* switch to nucleus because we are mapped by the primary context */ 525 525 nucleus_enter(); 526 526 527 527 ctx.v = pc_save.v = mmu_primary_context_read(); 528 528 ctx.context = asid; 529 529 mmu_primary_context_write(ctx.v); 530 530 531 531 itlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0); 532 532 dtlb_demap(TLB_DEMAP_CONTEXT, TLB_DEMAP_PRIMARY, 0); 533 533 534 534 mmu_primary_context_write(pc_save.v); 535 535 536 536 nucleus_leave(); 537 537 } … … 548 548 unsigned int i; 549 549 tlb_context_reg_t pc_save, ctx; 550 550 551 551 /* switch to nucleus because we are mapped by the primary context */ 552 552 nucleus_enter(); 553 553 554 554 ctx.v = pc_save.v = mmu_primary_context_read(); 555 555 ctx.context = asid; 556 556 mmu_primary_context_write(ctx.v); 557 557 558 558 for (i = 0; i < cnt * MMU_PAGES_PER_PAGE; i++) { 559 559 itlb_demap(TLB_DEMAP_PAGE, TLB_DEMAP_PRIMARY, … … 562 562 page + i * MMU_PAGE_SIZE); 563 563 } 564 564 565 565 mmu_primary_context_write(pc_save.v); 566 566 567 567 nucleus_leave(); 568 568 }
Note:
See TracChangeset
for help on using the changeset viewer.