Skip to content

Commit

Permalink
fixup! Implement Hypervisor extension
Browse files Browse the repository at this point in the history
  • Loading branch information
alexmikhalevich committed Jun 5, 2023
1 parent 4342664 commit e49b5a3
Show file tree
Hide file tree
Showing 26 changed files with 689 additions and 380 deletions.
2 changes: 1 addition & 1 deletion lib/grpc-interfaces
3 changes: 3 additions & 0 deletions src/clua-i-virtual-machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ IMPL_MACHINE_OBJ_READ_WRITE(hie)
IMPL_MACHINE_OBJ_READ_WRITE(hip)
IMPL_MACHINE_OBJ_READ_WRITE(hvip)
IMPL_MACHINE_OBJ_READ_WRITE(hgatp)
IMPL_MACHINE_OBJ_READ_WRITE(henvcfg)
IMPL_MACHINE_OBJ_READ_WRITE(htimedelta)
IMPL_MACHINE_OBJ_READ_WRITE(htval)
IMPL_MACHINE_OBJ_READ_WRITE(vsepc)
Expand Down Expand Up @@ -613,6 +614,7 @@ static const auto machine_obj_index = cartesi::clua_make_luaL_Reg_array({
{"read_hip", machine_obj_index_read_hip},
{"read_hvip", machine_obj_index_read_hvip},
{"read_hgatp", machine_obj_index_read_hgatp},
{"read_henvcfg", machine_obj_index_read_henvcfg},
{"read_htimedelta", machine_obj_index_read_htimedelta},
{"read_htval", machine_obj_index_read_htval},
{"read_vsepc", machine_obj_index_read_vsepc},
Expand Down Expand Up @@ -677,6 +679,7 @@ static const auto machine_obj_index = cartesi::clua_make_luaL_Reg_array({
{"write_hip", machine_obj_index_write_hip},
{"write_hvip", machine_obj_index_write_hvip},
{"write_hgatp", machine_obj_index_write_hgatp},
{"write_henvcfg", machine_obj_index_write_henvcfg},
{"write_htimedelta", machine_obj_index_write_htimedelta},
{"write_htval", machine_obj_index_write_htval},
{"write_vsepc", machine_obj_index_write_vsepc},
Expand Down
8 changes: 8 additions & 0 deletions src/grpc-virtual-machine.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -721,6 +721,14 @@ void grpc_virtual_machine::do_write_hgatp(uint64_t val) {
write_csr(csr::hgatp, val);
}

uint64_t grpc_virtual_machine::do_read_henvcfg(void) const {
return read_csr(csr::henvcfg);
}

void grpc_virtual_machine::do_write_henvcfg(uint64_t val) {
write_csr(csr::henvcfg, val);
}

uint64_t grpc_virtual_machine::do_read_htimedelta(void) const {
return read_csr(csr::htimedelta);
}
Expand Down
2 changes: 2 additions & 0 deletions src/grpc-virtual-machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,8 @@ class grpc_virtual_machine : public i_virtual_machine {
void do_write_hie(uint64_t val) override;
uint64_t do_read_hgatp(void) const override;
void do_write_hgatp(uint64_t val) override;
uint64_t do_read_henvcfg(void) const override;
void do_write_henvcfg(uint64_t val) override;
uint64_t do_read_htimedelta(void) const override;
void do_write_htimedelta(uint64_t val) override;
uint64_t do_read_htval(void) const override;
Expand Down
12 changes: 12 additions & 0 deletions src/i-state-access.h
Original file line number Diff line number Diff line change
Expand Up @@ -446,6 +446,18 @@ class i_state_access { // CRTP
return derived().do_write_hgatp(val);
}

/// \brief Reads CSR henvcfg.
/// \returns Register value.
uint64_t read_henvcfg(void) {
return derived().do_read_henvcfg();
}

/// \brief Writes CSR henvcfg.
/// \param val New register value.
void write_henvcfg(uint64_t val) {
return derived().do_write_henvcfg(val);
}

/// \brief Reads CSR htimedelta.
/// \returns Register value.
uint64_t read_htimedelta(void) {
Expand Down
12 changes: 12 additions & 0 deletions src/i-virtual-machine.h
Original file line number Diff line number Diff line change
Expand Up @@ -506,6 +506,16 @@ class i_virtual_machine {
do_write_hgatp(val);
}

/// \brief Reads the henvcfg register
uint64_t read_henvcfg(void) const {
return do_read_henvcfg();
}

/// \brief Writes the henvcfg register
void write_henvcfg(uint64_t val) {
do_write_henvcfg(val);
}

/// \brief Reads the htimedelta register
uint64_t read_htimedelta(void) const {
return do_read_htimedelta();
Expand Down Expand Up @@ -906,6 +916,8 @@ class i_virtual_machine {
virtual void do_write_hie(uint64_t val) = 0;
virtual uint64_t do_read_hgatp(void) const = 0;
virtual void do_write_hgatp(uint64_t val) = 0;
virtual uint64_t do_read_henvcfg(void) const = 0;
virtual void do_write_henvcfg(uint64_t val) = 0;
virtual uint64_t do_read_htimedelta(void) const = 0;
virtual void do_write_htimedelta(uint64_t val) = 0;
virtual uint64_t do_read_htval(void) const = 0;
Expand Down
Loading

0 comments on commit e49b5a3

Please sign in to comment.