Refactored file dependencies to decouple components
This commit is contained in:
@ -224,19 +224,24 @@ struct vm_info {
|
||||
};
|
||||
|
||||
struct trap_load_access_fault : public trap_access {
|
||||
trap_load_access_fault(uint64_t badaddr) : trap_access(5 << 16, badaddr) {}
|
||||
trap_load_access_fault(uint64_t badaddr)
|
||||
: trap_access(5 << 16, badaddr) {}
|
||||
};
|
||||
struct illegal_instruction_fault : public trap_access {
|
||||
illegal_instruction_fault(uint64_t badaddr) : trap_access(2 << 16, badaddr) {}
|
||||
illegal_instruction_fault(uint64_t badaddr)
|
||||
: trap_access(2 << 16, badaddr) {}
|
||||
};
|
||||
struct trap_instruction_page_fault : public trap_access {
|
||||
trap_instruction_page_fault(uint64_t badaddr) : trap_access(12 << 16, badaddr) {}
|
||||
trap_instruction_page_fault(uint64_t badaddr)
|
||||
: trap_access(12 << 16, badaddr) {}
|
||||
};
|
||||
struct trap_load_page_fault : public trap_access {
|
||||
trap_load_page_fault(uint64_t badaddr) : trap_access(13 << 16, badaddr) {}
|
||||
trap_load_page_fault(uint64_t badaddr)
|
||||
: trap_access(13 << 16, badaddr) {}
|
||||
};
|
||||
struct trap_store_page_fault : public trap_access {
|
||||
trap_store_page_fault(uint64_t badaddr) : trap_access(15 << 16, badaddr) {}
|
||||
trap_store_page_fault(uint64_t badaddr)
|
||||
: trap_access(15 << 16, badaddr) {}
|
||||
};
|
||||
}
|
||||
|
||||
@ -277,7 +282,7 @@ using mstatus32_t = union {
|
||||
uint32_t SD : 1, _WPRI4 : 11, MXR : 1, SUM : 1, _WPRI3 : 1, XS : 2, FS : 2, _WPRI2 : 8, UPIE : 1, _WPRI0 : 3,
|
||||
UIE : 1;
|
||||
} u;
|
||||
} ;
|
||||
};
|
||||
|
||||
using mstatus64_t = union {
|
||||
uint64_t val;
|
||||
@ -324,7 +329,7 @@ using mstatus64_t = union {
|
||||
UXL : 2, // value of XLEN for U-mode
|
||||
_WPRI3 : 12, MXR : 1, SUM : 1, _WPRI2 : 1, XS : 2, FS : 2, _WPRI1 : 8, UPIE : 1, _WPRI0 : 3, UIE : 1;
|
||||
} u;
|
||||
} ;
|
||||
};
|
||||
|
||||
template <unsigned L> inline vm_info decode_vm_info(uint32_t state, uint64_t sptbr);
|
||||
|
||||
@ -483,7 +488,10 @@ private:
|
||||
void check_interrupt();
|
||||
};
|
||||
|
||||
template <typename BASE> riscv_hart_msu_vp<BASE>::riscv_hart_msu_vp() : mstatus_r(csr[mstatus]), satp_r(csr[satp]) {
|
||||
template <typename BASE>
|
||||
riscv_hart_msu_vp<BASE>::riscv_hart_msu_vp()
|
||||
: mstatus_r(csr[mstatus])
|
||||
, satp_r(csr[satp]) {
|
||||
csr[misa] = traits<BASE>::XLEN == 32 ? 1ULL << (traits<BASE>::XLEN - 2) : 2ULL << (traits<BASE>::XLEN - 2);
|
||||
uart_buf.str("");
|
||||
// read-only registers
|
||||
|
@ -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: Thu Sep 21 17:01:54 CEST 2017
|
||||
// Created on: Tue Sep 26 17:41:14 CEST 2017
|
||||
// * rv32imac.h Author: <CoreDSL Generator>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -103,15 +103,15 @@ template <> struct traits<rv32imac> {
|
||||
ICOUNT
|
||||
};
|
||||
|
||||
typedef uint32_t reg_t;
|
||||
using reg_t = uint32_t;
|
||||
|
||||
typedef uint32_t addr_t;
|
||||
using addr_t = uint32_t;
|
||||
|
||||
typedef uint32_t code_word_t; // TODO: check removal
|
||||
using code_word_t = uint32_t; // TODO: check removal
|
||||
|
||||
typedef iss::typed_addr_t<iss::VIRTUAL> virt_addr_t;
|
||||
using virt_addr_t = iss::typed_addr_t<iss::VIRTUAL>;
|
||||
|
||||
typedef iss::typed_addr_t<iss::PHYSICAL> phys_addr_t;
|
||||
using phys_addr_t = iss::typed_addr_t<iss::PHYSICAL>;
|
||||
|
||||
constexpr static unsigned reg_bit_width(unsigned r) {
|
||||
const uint32_t RV32IMAC_reg_size[] = {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
|
||||
@ -142,19 +142,19 @@ struct rv32imac : public arch_if {
|
||||
rv32imac();
|
||||
~rv32imac();
|
||||
|
||||
virtual void reset(uint64_t address = 0) override;
|
||||
void reset(uint64_t address = 0) override;
|
||||
|
||||
virtual uint8_t *get_regs_base_ptr() override;
|
||||
uint8_t *get_regs_base_ptr() override;
|
||||
/// deprecated
|
||||
virtual void get_reg(short idx, std::vector<uint8_t> &value) override {}
|
||||
virtual void set_reg(short idx, const std::vector<uint8_t> &value) override {}
|
||||
void get_reg(short idx, std::vector<uint8_t> &value) override {}
|
||||
void set_reg(short idx, const std::vector<uint8_t> &value) override {}
|
||||
/// deprecated
|
||||
virtual bool get_flag(int flag) override { return false; }
|
||||
virtual void set_flag(int, bool value) override{};
|
||||
bool get_flag(int flag) override { return false; }
|
||||
void set_flag(int, bool value) override{};
|
||||
/// deprecated
|
||||
virtual void update_flags(operations op, uint64_t opr1, uint64_t opr2) override{};
|
||||
void update_flags(operations op, uint64_t opr1, uint64_t opr2) override{};
|
||||
|
||||
virtual void notify_phase(exec_phase phase) {
|
||||
void notify_phase(exec_phase phase) {
|
||||
if (phase == ISTART) {
|
||||
++reg.icount;
|
||||
reg.PC = reg.NEXT_PC;
|
||||
|
@ -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: Thu Sep 21 17:01:54 CEST 2017
|
||||
// Created on: Tue Sep 26 17:41:14 CEST 2017
|
||||
// * rv64ia.h Author: <CoreDSL Generator>
|
||||
//
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
@ -103,15 +103,15 @@ template <> struct traits<rv64ia> {
|
||||
ICOUNT
|
||||
};
|
||||
|
||||
typedef uint64_t reg_t;
|
||||
using reg_t = uint64_t;
|
||||
|
||||
typedef uint64_t addr_t;
|
||||
using addr_t = uint64_t;
|
||||
|
||||
typedef uint64_t code_word_t; // TODO: check removal
|
||||
using code_word_t = uint64_t; // TODO: check removal
|
||||
|
||||
typedef iss::typed_addr_t<iss::VIRTUAL> virt_addr_t;
|
||||
using virt_addr_t = iss::typed_addr_t<iss::VIRTUAL>;
|
||||
|
||||
typedef iss::typed_addr_t<iss::PHYSICAL> phys_addr_t;
|
||||
using phys_addr_t = iss::typed_addr_t<iss::PHYSICAL>;
|
||||
|
||||
constexpr static unsigned reg_bit_width(unsigned r) {
|
||||
const uint32_t RV64IA_reg_size[] = {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64,
|
||||
@ -141,19 +141,19 @@ struct rv64ia : public arch_if {
|
||||
rv64ia();
|
||||
~rv64ia();
|
||||
|
||||
virtual void reset(uint64_t address = 0) override;
|
||||
void reset(uint64_t address = 0) override;
|
||||
|
||||
virtual uint8_t *get_regs_base_ptr() override;
|
||||
uint8_t *get_regs_base_ptr() override;
|
||||
/// deprecated
|
||||
virtual void get_reg(short idx, std::vector<uint8_t> &value) override {}
|
||||
virtual void set_reg(short idx, const std::vector<uint8_t> &value) override {}
|
||||
void get_reg(short idx, std::vector<uint8_t> &value) override {}
|
||||
void set_reg(short idx, const std::vector<uint8_t> &value) override {}
|
||||
/// deprecated
|
||||
virtual bool get_flag(int flag) override { return false; }
|
||||
virtual void set_flag(int, bool value) override{};
|
||||
bool get_flag(int flag) override { return false; }
|
||||
void set_flag(int, bool value) override{};
|
||||
/// deprecated
|
||||
virtual void update_flags(operations op, uint64_t opr1, uint64_t opr2) override{};
|
||||
void update_flags(operations op, uint64_t opr1, uint64_t opr2) override{};
|
||||
|
||||
virtual void notify_phase(exec_phase phase) {
|
||||
void notify_phase(exec_phase phase) {
|
||||
if (phase == ISTART) {
|
||||
++reg.icount;
|
||||
reg.PC = reg.NEXT_PC;
|
||||
|
Reference in New Issue
Block a user