Changeset 285 for trunk/modules/vci_cc_vcache_wrapper_v4/caba/source
- Timestamp:
- Dec 17, 2012, 3:49:47 PM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/modules/vci_cc_vcache_wrapper_v4/caba/source/src/vci_cc_vcache_wrapper_v4.cpp
r284 r285 2350 2350 { 2351 2351 case iss_t::XTN_PTPR: // itlb & dtlb must be flushed 2352 r_mmu_ptpr = m_dreq.wdata;2353 2352 r_dcache_xtn_req = true; 2354 2353 r_dcache_fsm = DCACHE_XTN_SWITCH; … … 3368 3367 } 3369 3368 /////////////////////// 3370 case DCACHE_XTN_SWITCH: // Both itlb and dtlb must be flushed 3371 { 3369 case DCACHE_XTN_SWITCH: // The r_ptpr registers must be written, 3370 // and both itlb and dtlb must be flushed. 3371 // Caution : the itlb miss requests must be taken 3372 // to avoid dead-lock in case of simultaneous ITLB miss 3373 { 3374 // itlb miss request 3375 if ( r_icache_tlb_miss_req.read() ) 3376 { 3377 r_dcache_tlb_ins = true; 3378 r_dcache_tlb_vaddr = r_icache_vaddr_save.read(); 3379 r_dcache_fsm = DCACHE_TLB_MISS; 3380 break; 3381 } 3382 3372 3383 if ( not r_dcache_xtn_req.read() ) 3373 3384 { 3374 3385 r_dtlb.flush(); 3386 r_mmu_ptpr = m_dreq.wdata; 3375 3387 r_dcache_fsm = DCACHE_IDLE; 3376 3388 m_drsp.valid = true; … … 3380 3392 ///////////////////// 3381 3393 case DCACHE_XTN_SYNC: // waiting until write buffer empty 3382 3383 3394 // The coherence request must be taken 3395 // as there is a risk of dead-lock 3384 3396 { 3385 3397 // external coherence request … … 3401 3413 case DCACHE_XTN_IC_INVAL_VA: // Caution : the itlb miss requests must be taken 3402 3414 case DCACHE_XTN_IC_INVAL_PA: // because the XTN_ICACHE_INVAL request to icache 3403 case DCACHE_XTN_IT_INVAL: // can generate an itlb miss... 3415 case DCACHE_XTN_IT_INVAL: // can generate an itlb miss, 3416 // and because it can exist a simultaneous ITLB miss 3404 3417 { 3405 3418 // external coherence request … … 3434 3447 // A cleanup request is generated for each valid line 3435 3448 // and we are blocked until the previous cleanup is completed 3436 // Finally, both the itlb and dtlb are flushed3449 // Finally, both the itlb and dtlb are flushed 3437 3450 // (including global entries) 3438 3451 {
Note: See TracChangeset
for help on using the changeset viewer.