hie

Hypervisor Interrupt Enable Register

The hie register is a read/write register in HS-mode that enables interrupts. It corresponds to the enable bits for VS-level and hypervisor-specific interrupts, and supplements the HS-level sie register.

Attributes

Requirement

H

Defining extensions

H

Hypervisor

CSR Address

0x604

Length

* 32 when CSR[mstatus].SXL == 0 * 64 when CSR[mstatus].SXL == 1

Privilege Mode

S

Format

This CSR format changes dynamically.

hie Format when CSR[mstatus].SXL == 0
Figure 1. hie Format when CSR[mstatus].SXL == 0
hie Format when CSR[mstatus].SXL == 1
Figure 2. hie Format when CSR[mstatus].SXL == 1

Field Summary

Name Location Type Reset Value

hie.SGEIE

12

RW

UNDEFINED_LEGAL

hie.VSEIE

10

RW

UNDEFINED_LEGAL

hie.VSTIE

6

RW

UNDEFINED_LEGAL

hie.VSSIE

2

RW

UNDEFINED_LEGAL

Fields

SGEIE

Location

12

Description

Hypervisor guest external interrupt enable bit. When set, allows external interrupts to be delivered to VS-mode based on the hgeie setting.

Type

RW

Reset value

UNDEFINED_LEGAL

VSEIE

Location

10

Description

VS-level external interrupt enable bit. When set, allows external interrupts directed to VS-level to be processed based on the configuration in hvip and other platform-specific sources.

Type

RW

Reset value

UNDEFINED_LEGAL

VSTIE

Location

6

Description

VS-level timer interrupt enable bit. When set, allows VS-level timer interrupts to be processed based on the hvip configuration and any platform-specific timer interrupts.

Type

RW

Reset value

UNDEFINED_LEGAL

VSSIE

Location

2

Description

VS-level software interrupt enable bit. When set, allows software interrupts directed to VS-level to be processed, based on the configuration in hvip.

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:

SGEIE = if (CSR[mideleg].SGEI == 0) {
  return 0;
}
return csr_value.SGEIE;

VSEIE = if (CSR[mideleg].VSEI == 0) {
  return 0;
}
return csr_value.VSEIE;

VSTIE = if (CSR[mideleg].VSTI == 0) {
  return 0;
}
return csr_value.VSTIE;

VSSIE = if (CSR[mideleg].VSSI == 0) {
  return 0;
}
return csr_value.VSSIE;