mhpmcounter28

Machine Hardware Performance Counter 28

Programmable hardware performance counter.

The hpmcounter28 CSR is a read-only shadow of this CSR. Access to hpmcounter28 is controlled with mcounteren.HPM28 <%- if ext?(:S) -%> , scounteren.HPM28 <%- if ext?(:H) -%> , and hcounteren.HPM28 <%- end -%> <%- end -%> as follows:

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

mcounteren.HPM28

scounteren.HPM28

hcounteren.HPM28

hpmcounter28 behavior

S-mode

U-mode

VS-mode

VU-mode

0

-

-

IllegalInstruction

IllegalInstruction

IllegalInstruction

IllegalInstruction

1

0

0

read-only

IllegalInstruction

VirtualInstruction

VirtualInstruction

1

1

0

read-only

read-only

VirtualInstruction

VirtualInstruction

1

0

1

read-only

IllegalInstruction

read-only

VirtualInstruction

1

1

1

read-only

read-only

read-only

read-only

<%- elsif ext?(:S) -%>

mcounteren.HPM28

scounteren.HPM28

hpmcounter28 behavior

S-mode

U-mode

0

-

IllegalInstruction

IllegalInstruction

1

0

read-only

IllegalInstruction

1

1

read-only

read-only

<%- else -%>

mcounteren.HPM28

hpmcounter28 behavior

U-mode

0

IllegalInstruction

1

read-only

<%- end -%>

Attributes

Requirement

Sm

Defining extensions

Sm

Machine mode

CSR Address

0xb1c

Length

64-bit

Privilege Mode

M

Format

mhpmcounter28 format
Figure 1. mhpmcounter28 format

Field Summary

Name Location Type Reset Value

mhpmcounter28.COUNT

63:0

[when,"HPM_COUNTER_EN[28]"] RW-H

[when,"!(HPM_COUNTER_EN[28])"] RO

UNDEFINED_LEGAL

Fields

COUNT

Location

63:0

Description

Performance counter for event selected in mhpmevent28.EVENT.

Increments every time event occurs unless:

  • mcountinhibit.HPM28 <%- if ext?(:Smcdeleg) -%>or its alias scountinhibit.HPM28<%- end -%> is set <%- if ext?(:Sscofpmf) -%>

  • mhpmevent28.MINH is set and the current privilege level is M <%- if ext?(:S) -%>

  • mhpmevent28.SINH <%- if ext?(:Ssccfg) -%>or its alias hpmevent28.SINH<%- end -%> is set and the current privilege level is (H)S <%- end -%> <%- if ext?(:U) -%>

  • mhpmevent28.UINH <%- if ext?(:Ssccfg) -%>or its alias hpmevent28.UINH<%- end -%> is set and the current privilege level is U <%- end -%> <%- if ext?(:H) -%>

  • mhpmevent28.VSINH <%- if ext?(:Ssccfg) -%>or its alias hpmevent28.VSINH<%- end -%> is set and the current privilege level is VS

  • mhpmevent28.VUINH <%- if ext?(:Ssccfg) -%>or its alias hpmevent28.VUINH<%- end -%> is set and the current privilege level is VU <%- end -%> <%- end -%>

Unimplemented performance counter. Must be read-only 0 (access does not cause trap).

Type

RW-H

RO

Reset value

UNDEFINED_LEGAL

Software read

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

if (HPM_COUNTER_EN[28]) {
  return read_hpm_counter(28);
} else {
  return 0;
}