• L
    pma: add pmp-like pma, software can read and write (#1169) · ca2f90a6
    Lemover 提交于
    remove the old hard-wired pma and turn to pmp-like csr registers. the pma config is writen in pma register.
    1. pma are m-priv csr, so only m-mode csrrw can change pma
    2. even in m-mode, pma should be always checked, no matter lock or not
    3. so carefully write pma, make sure not to "suicide"
    
    * pma: add pmp-like pma, just module/bundle added, not to circuit
    
    use reserved 2 bits as atomic and cached
    
    * pma: add pmp-like pma into pmp module
    
    pma have two more attribute than pmp
    1. atmoic;
    2. c/cache, if false, go to mmio.
    
    pma uses 16+4 machine-level custom ready write csr.
    pma will always be checked even in m-mode.
    
    * pma: remove the old MemMap in tlb, mmio arrives next cycle
    
    * pma: ptw raise af when mmio
    
    * pma: fix bug of match's zip with last entry
    
    * pma: fix bug of pass reset signal through method's parameter
    
    strange bug, want to reset, pass reset signal to a method, does not
    work.
    import chisel3.Module.reset, the method can access reset it's self.
    
    * pma: move some method to trait and fix bug of pma_init value
    
    * pma: fix bug of pma init value assign way
    
    * tlb: fix stupid bug that pf.ld not & fault_valid
    
    * loadunit: fix bug that uop is flushed, pmp's dcache kill failed also
    
    * ifu: mmio access needs f2_valid now
    
    * loadunit: if mmio and have sent fastUop, flush pipe when commit
    
    * storeunit: stu->lsq at stage1 and re-in lsq at stage2 to update mmio
    ca2f90a6
StoreUnit.scala 9.4 KB