scause

Supervisor Cause

Reports the cause of the latest exception.

Attributes

CSR Address

0x142

Defining extension

  • S, version >= 0

Length

64-bit

Privilege Mode

S

Format

scause format
Figure 1. scause format

Field Summary

Name Location Type Reset Value

INT

63

RW-RH

UNDEFINED_LEGAL

CODE

62:0

RW-RH

UNDEFINED_LEGAL

Fields

INT

Location

scause[63]

Description

Written by hardware when a trap is taken into S-mode.

When set, the last exception was caused by an asynchronous Interrupt.

scause.INT is writeable.

If scause is written with an undefined cause (combination of scause.INT and scause.CODE), an Illegal Instruction exception occurs.

If scause is written with an undefined cause (combination of scause.INT and scause.CODE), neither scause.INT nor scause.CODE are modified.

Type

RW-RH

Read-Write Restricted with Hardware update

Field is writeable by software. Only certain values are legal. Writing an illegal value into the field is ignored, such that the field retains its prior state. Hardware also updates the field without an explicit software write.)

Reset value

UNDEFINED_LEGAL

Software write

This field has special behavior when written by software (e.g., through csrrw).

When software tries to write csr_value, the field will be written with the return value of the function below.

if (csr_value.INT == 1) {
  if (valid_interrupt_code?(csr_value.CODE)) {
    return 1;
  }
  return ILLEGAL_WLRL;
} else {
  if (valid_exception_code?(csr_value.CODE)) {
    return 1;
  }
  return ILLEGAL_WLRL;
}

CODE

Location

scause[62:0]

Description

Written by hardware when a trap is taken into S-mode.

Holds the interrupt or exception code for the last taken trap.

scause.CODE is writeable.

If scause is written with an undefined cause (combination of scause.INT and scause.CODE), an Illegal Instruction exception occurs.

If scause is written with an undefined cause (combination of scause.INT and scause.CODE), neither scause.INT nor scause.CODE are modified.

Valid interrupt codes are:

1

Supervisor software interrupt

2

Virtual supervisor software interrupt

3

Machine software interrupt

5

Supervisor timer interrupt

6

Virtual supervisor timer interrupt

7

Machine timer interrupt

9

Supervisor external interrupt

10

Virtual supervisor external interrupt

11

Machine external interrupt

12

Supervisor guest external interrupt

+ Valid exception codes are:

0

Instruction address misaligned

1

Instruction access fault

2

Illegal instruction

3

Breakpoint

4

Load address misaligned

5

Load access fault

6

Store/AMO address misaligned

7

Store/AMO access fault

8

Environment call from <%- if ext?(:H) -%>V<%- end -%>U-mode

9

Environment call from <%- if ext?(:H) -%>H<%- end -%>S-mode

10

Environment call from VS-mode

11

Environment call from M-mode

12

Instruction page fault

13

Load page fault

15

Store/AMO page fault

18

Software Check

20

Instruction guest page fault

21

Load guest page fault

22

Virtual instruction

23

Store/AMO guest page fault

Type

RW-RH

Read-Write Restricted with Hardware update

Field is writeable by software. Only certain values are legal. Writing an illegal value into the field is ignored, such that the field retains its prior state. Hardware also updates the field without an explicit software write.)

Reset value

UNDEFINED_LEGAL

Software write

This field has special behavior when written by software (e.g., through csrrw).

When software tries to write csr_value, the field will be written with the return value of the function below.

if (csr_value.INT == 1) {
  if (valid_interrupt_code?(csr_value.CODE)) {
    return csr_value.CODE;
  }
  return ILLEGAL_WLRL;
} else {
  if (valid_exception_code?(csr_value.CODE)) {
    return csr_value.CODE;
  }
  return ILLEGAL_WLRL;
}