hstateen3

Hypervisor State Enable 3 Register

Each bit of a stateen CSR controls less-privileged access to an extension’s state, for an extension that was not deemed "worthy" of a full XS field in sstatus like the FS and VS fields for the F and V extensions.

The number of registers provided at each level is four because it is believed that 4 * 64 = 256 bits for machine and hypervisor levels, and 4 * 32 = 128 bits for supervisor level, will be adequate for many years to come, perhaps for as long as the RISC-V ISA is in use. The exact number four is an attempted compromise between providing too few bits on the one hand and going overboard with CSRs that will never be used on the other.

The stateen registers at each level control access to state at all less-privileged levels, but not at its own level.

When a stateen CSR prevents access to state for a privilege mode, attempting to execute in that privilege mode an instruction that implicitly updates the state without reading it may or may not raise an illegal instruction or virtual instruction exception. Such cases must be disambiguated by being explicitly specified one way or the other. In some cases, the bits of the stateen CSRs will have a dual purpose as enables for the ISA extensions that introduce the controlled state.

With the hypervisor extension, the hstateen CSRs have identical encodings to the mstateen CSRs, except controlling accesses for a virtual machine (from VS and VU modes).

For every bit in an hstateen CSR that is zero (whether read-only zero or set to zero), the same bit appears as read-only zero in sstateen when accessed in VS-mode.

A bit in an hstateen CSR cannot be read-only one unless the same bit is read-only one in the matching mstateen CSR.

Attributes

Defining Extension

  • allOf:

    • H, version >= H@1.0.0

    • Smstateen, version >= Smstateen@1.0.0

    • Ssstateen, version >= Ssstateen@1.0.0

CSR Address

0x60f

Length

64-bit

Privilege Mode

S

Format

hstateen3 format
Figure 1. hstateen3 format

Field Summary

Name Location Type Reset Value

hstateen3.SE0

63

RW

UNDEFINED_LEGAL

Fields

SE0

Location

63

Description

The SE0 bit in hstateen3 controls access to the sstateen3 CSR.

Type

RW

Reset value

UNDEFINED_LEGAL

Software write

This CSR may store a value that is different from what software attempts to write.

When a software write occurs (e.g., through csrrw), the following determines the written value:

SE0 = if (CSR[mstateen3].SE0 == 1'b0){
  return 0;
}
return csr_value.SE0;

Software read

This CSR may return a value that is different from what is stored in hardware.

Bits<64> mstateen3_mask = $bits(mstateen3);
Bits<64> hstateen3_value = $bits(hstateen3) & mstateen3_mask;
return hstateen3_value;