Added instruction enumeration and some cleanup
This commit is contained in:
		| @@ -811,17 +811,18 @@ template <typename BASE> iss::status riscv_hart_msu_vp<BASE>::write_csr(unsigned | ||||
| } | ||||
|  | ||||
| template <typename BASE> iss::status riscv_hart_msu_vp<BASE>::read_cycle(unsigned addr, reg_t &val) { | ||||
|     auto cycle_val=this->cycles ? this->cycles : this->reg.icount; | ||||
|     if (addr == mcycle) { | ||||
|         val = static_cast<reg_t>(this->reg.icount); | ||||
|         val = static_cast<reg_t>(cycle_val); | ||||
|     } else if (addr == mcycleh) { | ||||
|         if (sizeof(typename traits<BASE>::reg_t) != 4) return iss::Err; | ||||
|         val = static_cast<reg_t>((this->reg.icount) >> 32); | ||||
|         val = static_cast<reg_t>(cycle_val >> 32); | ||||
|     } | ||||
|     return iss::Ok; | ||||
| } | ||||
|  | ||||
| template <typename BASE> iss::status riscv_hart_msu_vp<BASE>::read_time(unsigned addr, reg_t &val) { | ||||
| 	uint64_t time_val=this->reg.icount>>12; | ||||
| 	uint64_t time_val=(this->cycles?this->cycles:this->reg.icount) / (100000000/32768-1); //-> ~3052; | ||||
|     if (addr == time) { | ||||
|         val = static_cast<reg_t>(time_val); | ||||
|     } else if (addr == timeh) { | ||||
|   | ||||
| @@ -28,7 +28,7 @@ | ||||
| // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
| // POSSIBILITY OF SUCH DAMAGE. | ||||
| //  | ||||
| // Created on: Fri Dec 15 14:41:57 CET 2017 | ||||
| // Created on: Sat Dec 30 12:50:15 CET 2017 | ||||
| //             *      rv32imac.h Author: <CoreDSL Generator> | ||||
| // | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -159,45 +159,48 @@ struct rv32imac: public arch_if { | ||||
|  | ||||
| protected: | ||||
|     struct RV32IMAC_regs { | ||||
|         uint32_t X0; | ||||
|         uint32_t X1; | ||||
|         uint32_t X2; | ||||
|         uint32_t X3; | ||||
|         uint32_t X4; | ||||
|         uint32_t X5; | ||||
|         uint32_t X6; | ||||
|         uint32_t X7; | ||||
|         uint32_t X8; | ||||
|         uint32_t X9; | ||||
|         uint32_t X10; | ||||
|         uint32_t X11; | ||||
|         uint32_t X12; | ||||
|         uint32_t X13; | ||||
|         uint32_t X14; | ||||
|         uint32_t X15; | ||||
|         uint32_t X16; | ||||
|         uint32_t X17; | ||||
|         uint32_t X18; | ||||
|         uint32_t X19; | ||||
|         uint32_t X20; | ||||
|         uint32_t X21; | ||||
|         uint32_t X22; | ||||
|         uint32_t X23; | ||||
|         uint32_t X24; | ||||
|         uint32_t X25; | ||||
|         uint32_t X26; | ||||
|         uint32_t X27; | ||||
|         uint32_t X28; | ||||
|         uint32_t X29; | ||||
|         uint32_t X30; | ||||
|         uint32_t X31; | ||||
|         uint32_t PC; | ||||
|         uint32_t NEXT_PC; | ||||
|         uint32_t trap_state, pending_trap, machine_state; | ||||
|         uint64_t icount; | ||||
|         uint32_t X0 = 0; | ||||
|         uint32_t X1 = 0; | ||||
|         uint32_t X2 = 0; | ||||
|         uint32_t X3 = 0; | ||||
|         uint32_t X4 = 0; | ||||
|         uint32_t X5 = 0; | ||||
|         uint32_t X6 = 0; | ||||
|         uint32_t X7 = 0; | ||||
|         uint32_t X8 = 0; | ||||
|         uint32_t X9 = 0; | ||||
|         uint32_t X10 = 0; | ||||
|         uint32_t X11 = 0; | ||||
|         uint32_t X12 = 0; | ||||
|         uint32_t X13 = 0; | ||||
|         uint32_t X14 = 0; | ||||
|         uint32_t X15 = 0; | ||||
|         uint32_t X16 = 0; | ||||
|         uint32_t X17 = 0; | ||||
|         uint32_t X18 = 0; | ||||
|         uint32_t X19 = 0; | ||||
|         uint32_t X20 = 0; | ||||
|         uint32_t X21 = 0; | ||||
|         uint32_t X22 = 0; | ||||
|         uint32_t X23 = 0; | ||||
|         uint32_t X24 = 0; | ||||
|         uint32_t X25 = 0; | ||||
|         uint32_t X26 = 0; | ||||
|         uint32_t X27 = 0; | ||||
|         uint32_t X28 = 0; | ||||
|         uint32_t X29 = 0; | ||||
|         uint32_t X30 = 0; | ||||
|         uint32_t X31 = 0; | ||||
|         uint32_t PC = 0; | ||||
|         uint32_t NEXT_PC = 0; | ||||
|         uint32_t trap_state = 0, pending_trap = 0, machine_state = 0; | ||||
|         uint64_t icount = 0; | ||||
|     } reg; | ||||
|  | ||||
|     address_type addr_mode[4]; | ||||
|  | ||||
|     uint64_t cycles = 0; | ||||
|  | ||||
| }; | ||||
|  | ||||
| } | ||||
|   | ||||
| @@ -28,7 +28,7 @@ | ||||
| // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||||
| // POSSIBILITY OF SUCH DAMAGE. | ||||
| //  | ||||
| // Created on: Fri Dec 15 14:41:58 CET 2017 | ||||
| // Created on: Sat Dec 30 12:50:15 CET 2017 | ||||
| //             *      rv64ia.h Author: <CoreDSL Generator> | ||||
| // | ||||
| //////////////////////////////////////////////////////////////////////////////// | ||||
| @@ -159,45 +159,48 @@ struct rv64ia: public arch_if { | ||||
|  | ||||
| protected: | ||||
|     struct RV64IA_regs { | ||||
|         uint64_t X0; | ||||
|         uint64_t X1; | ||||
|         uint64_t X2; | ||||
|         uint64_t X3; | ||||
|         uint64_t X4; | ||||
|         uint64_t X5; | ||||
|         uint64_t X6; | ||||
|         uint64_t X7; | ||||
|         uint64_t X8; | ||||
|         uint64_t X9; | ||||
|         uint64_t X10; | ||||
|         uint64_t X11; | ||||
|         uint64_t X12; | ||||
|         uint64_t X13; | ||||
|         uint64_t X14; | ||||
|         uint64_t X15; | ||||
|         uint64_t X16; | ||||
|         uint64_t X17; | ||||
|         uint64_t X18; | ||||
|         uint64_t X19; | ||||
|         uint64_t X20; | ||||
|         uint64_t X21; | ||||
|         uint64_t X22; | ||||
|         uint64_t X23; | ||||
|         uint64_t X24; | ||||
|         uint64_t X25; | ||||
|         uint64_t X26; | ||||
|         uint64_t X27; | ||||
|         uint64_t X28; | ||||
|         uint64_t X29; | ||||
|         uint64_t X30; | ||||
|         uint64_t X31; | ||||
|         uint64_t PC; | ||||
|         uint64_t NEXT_PC; | ||||
|         uint32_t trap_state, pending_trap, machine_state; | ||||
|         uint64_t icount; | ||||
|         uint64_t X0 = 0; | ||||
|         uint64_t X1 = 0; | ||||
|         uint64_t X2 = 0; | ||||
|         uint64_t X3 = 0; | ||||
|         uint64_t X4 = 0; | ||||
|         uint64_t X5 = 0; | ||||
|         uint64_t X6 = 0; | ||||
|         uint64_t X7 = 0; | ||||
|         uint64_t X8 = 0; | ||||
|         uint64_t X9 = 0; | ||||
|         uint64_t X10 = 0; | ||||
|         uint64_t X11 = 0; | ||||
|         uint64_t X12 = 0; | ||||
|         uint64_t X13 = 0; | ||||
|         uint64_t X14 = 0; | ||||
|         uint64_t X15 = 0; | ||||
|         uint64_t X16 = 0; | ||||
|         uint64_t X17 = 0; | ||||
|         uint64_t X18 = 0; | ||||
|         uint64_t X19 = 0; | ||||
|         uint64_t X20 = 0; | ||||
|         uint64_t X21 = 0; | ||||
|         uint64_t X22 = 0; | ||||
|         uint64_t X23 = 0; | ||||
|         uint64_t X24 = 0; | ||||
|         uint64_t X25 = 0; | ||||
|         uint64_t X26 = 0; | ||||
|         uint64_t X27 = 0; | ||||
|         uint64_t X28 = 0; | ||||
|         uint64_t X29 = 0; | ||||
|         uint64_t X30 = 0; | ||||
|         uint64_t X31 = 0; | ||||
|         uint64_t PC = 0; | ||||
|         uint64_t NEXT_PC = 0; | ||||
|         uint32_t trap_state = 0, pending_trap = 0, machine_state = 0; | ||||
|         uint64_t icount = 0; | ||||
|     } reg; | ||||
|  | ||||
|     address_type addr_mode[4]; | ||||
|  | ||||
|     uint64_t cycles = 0; | ||||
|      | ||||
| }; | ||||
|  | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user