Ignore:
Timestamp:
Apr 6, 2015, 11:53:18 AM (9 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
  • branches/reconfiguration/modules/vci_cc_vcache_wrapper/caba/source/src/vci_cc_vcache_wrapper.cpp

    r928 r970  
    11391139            else if ((int) r_dcache_xtn_opcode.read() == (int) iss_t::XTN_MMU_ICACHE_PA_INV)
    11401140            {
    1141                 if (sizeof(paddr_t) <= 32)
    1142                 {
    1143                     assert(r_mmu_word_hi.read() == 0 &&
    1144                     "illegal XTN request in ICACHE: high bits should be 0 for 32bit paddr");
    1145                     r_icache_vci_paddr = (paddr_t) r_mmu_word_lo.read();
    1146                 }
    1147                 else
    1148                 {
    1149                     r_icache_vci_paddr = (paddr_t) r_mmu_word_hi.read() << 32 |
    1150                                          (paddr_t) r_mmu_word_lo.read();
    1151                 }
     1141                uint64_t pa = ((uint64_t)r_mmu_word_hi.read() << 32) |
     1142                              ((uint64_t)r_mmu_word_lo.read());
     1143
     1144                r_icache_vci_paddr = (paddr_t)pa;
    11521145                r_icache_fsm = ICACHE_XTN_CACHE_INVAL_PA;
    11531146            }
     
    26402633
    26412634                    case iss_t::XTN_MMU_DCACHE_PA_INV: // dcache, dtlb & itlb access
     2635                    {
     2636                        uint64_t pa = ((uint64_t)r_mmu_word_hi.read() << 32) |
     2637                                      ((uint64_t)r_mmu_word_lo.read());
     2638
     2639                        r_dcache_save_paddr = (paddr_t)pa;
    26422640                        r_dcache_fsm = DCACHE_XTN_DC_INVAL_PA;
    2643                         if (sizeof(paddr_t) <= 32)
    2644                         {
    2645                             assert(r_mmu_word_hi.read() == 0 &&
    2646                             "high bits should be 0 for 32bit paddr");
    2647                             r_dcache_save_paddr = (paddr_t)r_mmu_word_lo.read();
    2648                         }
    2649                         else
    2650                         {
    2651                             r_dcache_save_paddr = (paddr_t)r_mmu_word_hi.read() << 32 |
    2652                                                   (paddr_t)r_mmu_word_lo.read();
    2653                         }
    26542641                        break;
    2655 
     2642                    }
    26562643                    case iss_t::XTN_DCACHE_FLUSH: // itlb and dtlb must be reset
    26572644                        r_dcache_flush_count = 0;
Note: See TracChangeset for help on using the changeset viewer.