mtinst

Machine Trap Instruction Register

When a trap is taken into M-mode, mtinst is written with a value that, if nonzero, provides information about the instruction that trapped, to assist software in handling the trap. The values that may be written to mtinst on a trap are documented in TODO.

mtinst is a WARL register that need only be able to hold the values that the implementation may automatically write to it on a trap.

Attributes

Defining Extension

  • H, version >= 0

CSR Address

0x34a

Length

32 when CSR[misa].MXL == 0 64 when CSR[misa].MXL == 1

Privilege Mode

M

Format

This CSR format changes dynamically.

mtinst Format when CSR[misa].MXL == 0
Figure 1. mtinst Format when CSR[misa].MXL == 0
mtinst Format when CSR[misa].MXL == 1
Figure 2. mtinst Format when CSR[misa].MXL == 1

Field Summary

Name Location Type Reset Value

mtinst.VALUE

* 31:0 when CSR[misa].MXL == 0 * 63:0 when CSR[misa].MXL == 1

[when,"(((((((((((((((TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT != "always zero" || TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT != "always zero") || TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT != "always zero") || TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_BREAKPOINT != "always zero") || TINST_VALUE_ON_VIRTUAL_INSTRUCTION != "always zero") || TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_LOAD_ACCESS_FAULT != "always zero") || TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "always_zero") || TINST_VALUE_ON_UCALL != "always zero") || TINST_VALUE_ON_SCALL != "always zero") || TINST_VALUE_ON_MCALL != "always zero") || TINST_VALUE_ON_VSCALL != "always zero") || TINST_VALUE_ON_LOAD_PAGE_FAULT != "always zero") || TINST_VALUE_ON_STORE_AMO_PAGE_FAULT != "always zero")"] RW-H [when,"!(((((((((((((((TINST_VALUE_ON_FINAL_LOAD_GUEST_PAGE_FAULT != "always zero" || TINST_VALUE_ON_FINAL_STORE_AMO_GUEST_PAGE_FAULT != "always zero") || TINST_VALUE_ON_FINAL_INSTRUCTION_GUEST_PAGE_FAULT != "always zero") || TINST_VALUE_ON_INSTRUCTION_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_BREAKPOINT != "always zero") || TINST_VALUE_ON_VIRTUAL_INSTRUCTION != "always zero") || TINST_VALUE_ON_LOAD_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_LOAD_ACCESS_FAULT != "always zero") || TINST_VALUE_ON_STORE_AMO_ADDRESS_MISALIGNED != "always zero") || TINST_VALUE_ON_STORE_AMO_ACCESS_FAULT != "always_zero") || TINST_VALUE_ON_UCALL != "always zero") || TINST_VALUE_ON_SCALL != "always zero") || TINST_VALUE_ON_MCALL != "always zero") || TINST_VALUE_ON_VSCALL != "always zero") || TINST_VALUE_ON_LOAD_PAGE_FAULT != "always zero") || TINST_VALUE_ON_STORE_AMO_PAGE_FAULT != "always zero")"] RO

UNDEFINED_LEGAL

Fields

VALUE

Location
  • 31:0 when CSR[misa].MXL == 0

  • 63:0 when CSR[misa].MXL == 1

Description

Exception-specific information for a trap into M-mode.

Type
RW-H
RO
Reset value

UNDEFINED_LEGAL