vstval

Virtual supervisor Trap Value

Holds trap-specific information

Attributes

Defining Extension

  • H, version >= 0

CSR Address

0x243

Length

32 when CSR[hstatus].VSXL == 0 64 when CSR[hstatus].VSXL == 1

Privilege Mode

S

Format

This CSR format changes dynamically.

vstval Format when CSR[hstatus].VSXL == 0
Figure 1. vstval Format when CSR[hstatus].VSXL == 0
vstval Format when CSR[hstatus].VSXL == 1
Figure 2. vstval Format when CSR[hstatus].VSXL == 1

Field Summary

Name Location Type Reset Value

vstval.VALUE

* 31:0 when CSR[mstatus].SXL == 0 * 63:0 when CSR[mstatus].SXL == 1

RW-H

0

Fields

VALUE

Location
  • 31:0 when CSR[mstatus].SXL == 0

  • 63:0 when CSR[mstatus].SXL == 1

Description

Written with trap-specific information when a trap is taken into VS-mode.

The values are:

Exception type Value

[0] Instruction address misaligned

The misaligned virtual PC (same as the value written to mepc).

[1] Instruction access fault

The <% if ext?(:C) %> portion of the <% end %> virtual PC causing the access fault <%- unless ext?(:C) -%>(same as the value written to mepc)<%- end -%>.

[2] Illegal Instruction

The encoding of the illegal instruction.

[3] Breakpoint

When caused by an EBREAK instruction, the virtual PC of the breakpoint instruction.
[when,"REPORT_VA_IN_VSTVAL_ON_BREAKPOINT == false"]
When caused by an EBREAK instruction, zero.
When caused by a data address (_i.e._, watchpoint) breakpoint, the faulting virtual address.
When caused by an instruction address breakpoint, the faulting virtual PC.

[4] Load address misaligned

The misaligned virtual load address.

[5] Load access fault

The part of virtual load address causing in the access fault.

When the load is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte load is equally split across a page and the fault occurs on the second page, address + 4 is reported).

(Even though the access fault arises on a physical address, the virtual address is reported)

[6] Store/AMO address misaligned

The misaligned virtual store/AMO address.

[7] Store/AMO access fault

The virtual store/AMO address causing the access fault.

When the store/AMO is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte store is equally split across a page and the fault occurs on the second page, address + 4 is reported).

(Even though the access fault arises on a physical address, the virtual address is reported)

[8] Environment call from U-mode <% if ext?(:H) %>or VU-mode<% end %>

Zero

[9] Environment call from (H)S-mode

Zero <%- if ext?(:H) -%>

[10] Environment call from VS-mode

Zero <%- end -%>

[12] Instruction page fault

The <% if ext?(:C) %> portion of the <% end %> virtual PC causing the page fault <% unless ext?(:C) %>(same as the value written to mepc)<% end %>.

[13] Load page fault

The part of the virtual load address causing in the page fault.

When the load is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte load is equally split across a page and the fault occurs on the second page, address + 4 is reported).

[15] Store/AMO page fault

The virtual store/AMO address causing in the page fault.

When the store/AMO is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte store is equally split across a page and the fault occurs on the second page, address + 4 is reported). <%- if ext?(:H) -%>

[20] Instruction guest-page fault

The <% if ext?(:C) %> portion of the <% end %> virtual PC causing the fault <% unless ext?(:C) %>(same as the value written to mepc)<% end %>.

The guest physical address is reported in mtval2.

[21] Load guest-page fault

The part of the virtual address causing the fault.

When the load is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte load is equally split across a page and the fault occurs on the second page, address + 4 is reported).

The guest physical address is reported in mtval2.

[22] Virtual instruction

The encoding of the faulting virtual instruction.

[23] Store/AMO guest-page fault

The part of the virtual address causing the fault.

When the store/AMO is misaligned, the reported value is the smallest address on the page causing a fault (e.g., if an 8-byte store is equally split across a page and the fault occurs on the second page, address + 4 is reported).

The guest physical address is reported in htval. <%- end -%>

Type

RW-H

Reset value

0