mhpmevent21
Machine Hardware Performance Counter 21 Control
Programmable hardware performance counter event selector <% if ext?(:Sscofpmf) %> and overflow/filtering control<% end %>
Attributes
Requirement |
|||
|---|---|---|---|
Defining extensions |
|
||
CSR Address |
0x335 |
||
Length |
64-bit |
||
Privilege Mode |
M |
Field Summary
| Name | Location | Type | Reset Value |
|---|---|---|---|
63 |
[when,"HPM_COUNTER_EN[21]"] RW-H [when,"!(HPM_COUNTER_EN[21])"] RO |
UNDEFINED_LEGAL |
|
62 |
[when,"HPM_COUNTER_EN[21]"] RW [when,"!(HPM_COUNTER_EN[21])"] RO |
UNDEFINED_LEGAL |
|
61 |
[when,"HPM_COUNTER_EN[21] && implemented?(ExtensionName::S && CSR[misa].S == 1’b1)"] RW [when,"!HPM_COUNTER_EN[21] && implemented?(ExtensionName::S && CSR[misa].S == 1’b1)"] RO |
UNDEFINED_LEGAL |
|
60 |
[when,"HPM_COUNTER_EN[21] && implemented?(ExtensionName::U && CSR[misa].U == 1’b1)"] RW [when,"!HPM_COUNTER_EN[21] && implemented?(ExtensionName::U && CSR[misa].U == 1’b1)"] RO |
UNDEFINED_LEGAL |
|
59 |
[when,"(HPM_COUNTER_EN[21]) && implemented?(ExtensionName::H && CSR[misa].H == 1’b1)"] RW [when,"!(HPM_COUNTER_EN[21]) && implemented?(ExtensionName::H && CSR[misa].H == 1’b1)"] RO |
UNDEFINED_LEGAL |
|
58 |
[when,"HPM_COUNTER_EN[21] && implemented?(ExtensionName::H && CSR[misa].H == 1’b1)"] RW [when,"!HPM_COUNTER_EN[21] && implemented?(ExtensionName::H && CSR[misa].H == 1’b1)"] RO |
UNDEFINED_LEGAL |
|
57:0 |
[when,"HPM_COUNTER_EN[21]"] RW [when,"!(HPM_COUNTER_EN[21])"] RO |
UNDEFINED_LEGAL |
Fields
OF
- Location
-
63
- Description
-
Overflow status and interrupt disable.
The OF bit is set when the corresponding hpmcounter overflows, and remains set until written by software. Since hpmcounter values are unsigned values, overflow is defined as unsigned overflow of the implemented counter bits.
The OF bit is sticky; it stays set until explicitly cleared by a CSR write.
A Local Counter Overflow Interrupt (LCOFI) is generated when OF is clear and mhpmcounter21 overflows.
- Type
RW-H
RO
- Reset value
-
UNDEFINED_LEGAL
MINH
- Location
-
62
- Description
-
When set, mhpmcounter21 does not increment while the hart in operating in M-mode.
- Type
RW
RO
- Reset value
-
UNDEFINED_LEGAL
SINH
- Location
-
61
- Description
-
When set, mhpmcounter21 does not increment while the hart in operating in (H)S-mode.
- Type
RW
RO
- Reset value
-
UNDEFINED_LEGAL
UINH
- Location
-
60
- Description
-
When set, mhpmcounter21 does not increment while the hart in operating in U-mode.
- Type
RW
RO
- Reset value
-
UNDEFINED_LEGAL
VSINH
- Location
-
59
- Description
-
When set, mhpmcounter21 does not increment while the hart in operating in VS-mode.
- Type
RW
RO
- Reset value
-
UNDEFINED_LEGAL
VUINH
- Location
-
58
- Description
-
When set, mhpmcounter21 does not increment while the hart in operating in VU-mode.
- Type
RW
RO
- Reset value
-
UNDEFINED_LEGAL
EVENT
- Location
-
57:0
- Description
-
Event selector for performance counter mhpmcounter21.
- Type
RW
RO
- 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:
OF = csr_value.OF
MINH = csr_value.MINH
SINH = csr_value.SINH
UINH = csr_value.UINH
VSINH = csr_value.VSINH
VUINH = csr_value.VUINH
EVENT = if ($array_includes?(HPM_EVENTS, csr_value.EVENT)) {
return csr_value.EVENT;
} else {
return UNDEFINED_LEGAL_DETERMINISTIC;
}