Compare commits
	
		
			1 Commits
		
	
	
		
			ad1cbedf00
			...
			3f7ce41b9d
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 3f7ce41b9d | 
@@ -312,6 +312,7 @@ protected:
 | 
				
			|||||||
    iss::status write_epc(unsigned addr, reg_t val);
 | 
					    iss::status write_epc(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_intstatus(unsigned addr, reg_t val);
 | 
					    iss::status write_intstatus(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_intthresh(unsigned addr, reg_t val);
 | 
					    iss::status write_intthresh(unsigned addr, reg_t val);
 | 
				
			||||||
 | 
					    iss::status write_xtvt(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_dcsr_dcsr(unsigned addr, reg_t val);
 | 
					    iss::status write_dcsr_dcsr(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status read_dcsr_reg(unsigned addr, reg_t &val);
 | 
					    iss::status read_dcsr_reg(unsigned addr, reg_t &val);
 | 
				
			||||||
    iss::status write_dcsr_reg(unsigned addr, reg_t val);
 | 
					    iss::status write_dcsr_reg(unsigned addr, reg_t val);
 | 
				
			||||||
@@ -413,7 +414,7 @@ riscv_hart_m_p<BASE, FEAT>::riscv_hart_m_p(feature_config cfg)
 | 
				
			|||||||
    csr_wr_cb[mimpid] = &this_class::write_null;
 | 
					    csr_wr_cb[mimpid] = &this_class::write_null;
 | 
				
			||||||
    if(FEAT & FEAT_CLIC) {
 | 
					    if(FEAT & FEAT_CLIC) {
 | 
				
			||||||
        csr_rd_cb[mtvt] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mtvt] = &this_class::read_csr_reg;
 | 
				
			||||||
        csr_wr_cb[mtvt] = &this_class::write_csr_reg;
 | 
					        csr_wr_cb[mtvt] = &this_class::write_xtvt;
 | 
				
			||||||
        csr_rd_cb[mxnti] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mxnti] = &this_class::read_csr_reg;
 | 
				
			||||||
        csr_wr_cb[mxnti] = &this_class::write_csr_reg;
 | 
					        csr_wr_cb[mxnti] = &this_class::write_csr_reg;
 | 
				
			||||||
        csr_rd_cb[mintstatus] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mintstatus] = &this_class::read_csr_reg;
 | 
				
			||||||
@@ -943,6 +944,12 @@ iss::status riscv_hart_m_p<BASE, FEAT>::write_intthresh(unsigned addr, reg_t val
 | 
				
			|||||||
    return iss::Ok;
 | 
					    return iss::Ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template<typename BASE, features_e FEAT>
 | 
				
			||||||
 | 
					iss::status riscv_hart_mu_p<BASE, FEAT>::write_xtvt(unsigned addr, reg_t val) {
 | 
				
			||||||
 | 
					    csr[addr]= val & ~0x3fULL;
 | 
				
			||||||
 | 
					    return iss::Ok;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <typename BASE, features_e FEAT>
 | 
					template <typename BASE, features_e FEAT>
 | 
				
			||||||
iss::status riscv_hart_m_p<BASE, FEAT>::read_mem(phys_addr_t paddr, unsigned length, uint8_t *const data) {
 | 
					iss::status riscv_hart_m_p<BASE, FEAT>::read_mem(phys_addr_t paddr, unsigned length, uint8_t *const data) {
 | 
				
			||||||
    switch (paddr.val) {
 | 
					    switch (paddr.val) {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -329,6 +329,7 @@ protected:
 | 
				
			|||||||
    iss::status write_epc(unsigned addr, reg_t val);
 | 
					    iss::status write_epc(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_intstatus(unsigned addr, reg_t val);
 | 
					    iss::status write_intstatus(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_intthresh(unsigned addr, reg_t val);
 | 
					    iss::status write_intthresh(unsigned addr, reg_t val);
 | 
				
			||||||
 | 
					    iss::status write_xtvt(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status write_dcsr_dcsr(unsigned addr, reg_t val);
 | 
					    iss::status write_dcsr_dcsr(unsigned addr, reg_t val);
 | 
				
			||||||
    iss::status read_dcsr_reg(unsigned addr, reg_t &val);
 | 
					    iss::status read_dcsr_reg(unsigned addr, reg_t &val);
 | 
				
			||||||
    iss::status write_dcsr_reg(unsigned addr, reg_t val);
 | 
					    iss::status write_dcsr_reg(unsigned addr, reg_t val);
 | 
				
			||||||
@@ -460,7 +461,7 @@ riscv_hart_mu_p<BASE, FEAT>::riscv_hart_mu_p(feature_config cfg)
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    if(FEAT & FEAT_CLIC) {
 | 
					    if(FEAT & FEAT_CLIC) {
 | 
				
			||||||
        csr_rd_cb[mtvt] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mtvt] = &this_class::read_csr_reg;
 | 
				
			||||||
        csr_wr_cb[mtvt] = &this_class::write_csr_reg;
 | 
					        csr_wr_cb[mtvt] = &this_class::write_xtvt;
 | 
				
			||||||
        csr_rd_cb[mxnti] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mxnti] = &this_class::read_csr_reg;
 | 
				
			||||||
        csr_wr_cb[mxnti] = &this_class::write_csr_reg;
 | 
					        csr_wr_cb[mxnti] = &this_class::write_csr_reg;
 | 
				
			||||||
        csr_rd_cb[mintstatus] = &this_class::read_csr_reg;
 | 
					        csr_rd_cb[mintstatus] = &this_class::read_csr_reg;
 | 
				
			||||||
@@ -1109,6 +1110,12 @@ iss::status riscv_hart_mu_p<BASE, FEAT>::write_intthresh(unsigned addr, reg_t va
 | 
				
			|||||||
    return iss::Ok;
 | 
					    return iss::Ok;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					template<typename BASE, features_e FEAT>
 | 
				
			||||||
 | 
					iss::status riscv_hart_mu_p<BASE, FEAT>::write_xtvt(unsigned addr, reg_t val) {
 | 
				
			||||||
 | 
					    csr[addr]= val & ~0x3fULL;
 | 
				
			||||||
 | 
					    return iss::Ok;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
template <typename BASE, features_e FEAT>
 | 
					template <typename BASE, features_e FEAT>
 | 
				
			||||||
iss::status riscv_hart_mu_p<BASE, FEAT>::read_mem(phys_addr_t paddr, unsigned length, uint8_t *const data) {
 | 
					iss::status riscv_hart_mu_p<BASE, FEAT>::read_mem(phys_addr_t paddr, unsigned length, uint8_t *const data) {
 | 
				
			||||||
    switch (paddr.val) {
 | 
					    switch (paddr.val) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user