Ignore:
Timestamp:
Apr 6, 2015, 11:53:18 AM (10 years ago)
Author:
cfuguet
Message:

bugfix in vci_cc_vcache_wrapper: remove a wrong assert condition

  • Remove a wrong assert condition on the treatment of external requests (CP2) for dcache and icache physical address invalidation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/modules/vci_cc_vcache_wrapper/caba/source/src/vci_cc_vcache_wrapper.cpp

    r896 r970  
    11001100            else if ((int) r_dcache_xtn_opcode.read() == (int) iss_t::XTN_MMU_ICACHE_PA_INV)
    11011101            {
    1102                 if (sizeof(paddr_t) <= 32)
    1103                 {
    1104                     assert(r_mmu_word_hi.read() == 0 &&
    1105                     "illegal XTN request in ICACHE: high bits should be 0 for 32bit paddr");
    1106                     r_icache_vci_paddr = (paddr_t) r_mmu_word_lo.read();
    1107                 }
    1108                 else
    1109                 {
    1110                     r_icache_vci_paddr = (paddr_t) r_mmu_word_hi.read() << 32 |
    1111                                          (paddr_t) r_mmu_word_lo.read();
    1112                 }
     1102                uint64_t pa = ((uint64_t)r_mmu_word_hi.read() << 32) |
     1103                              ((uint64_t)r_mmu_word_lo.read());
     1104
     1105                r_icache_vci_paddr = (paddr_t)pa;
    11131106                r_icache_fsm = ICACHE_XTN_CACHE_INVAL_PA;
    11141107            }
     
    25922585
    25932586                    case iss_t::XTN_MMU_DCACHE_PA_INV: // dcache, dtlb & itlb access
     2587                    {
     2588                        uint64_t pa = ((uint64_t)r_mmu_word_hi.read() << 32) |
     2589                                      ((uint64_t)r_mmu_word_lo.read());
     2590
     2591                        r_dcache_save_paddr = (paddr_t)pa;
    25942592                        r_dcache_fsm = DCACHE_XTN_DC_INVAL_PA;
    2595                         if (sizeof(paddr_t) <= 32)
    2596                         {
    2597                             assert(r_mmu_word_hi.read() == 0 &&
    2598                             "high bits should be 0 for 32bit paddr");
    2599                             r_dcache_save_paddr = (paddr_t)r_mmu_word_lo.read();
    2600                         }
    2601                         else
    2602                         {
    2603                             r_dcache_save_paddr = (paddr_t)r_mmu_word_hi.read() << 32 |
    2604                                                   (paddr_t)r_mmu_word_lo.read();
    2605                         }
    26062593                        break;
    2607 
     2594                    }
    26082595                    case iss_t::XTN_DCACHE_FLUSH: // itlb and dtlb must be reset
    26092596                        r_dcache_flush_count = 0;
Note: See TracChangeset for help on using the changeset viewer.