mhpmcounter8

Machine Hardware Performance Counter 8

Programmable hardware performance counter.

The hpmcounter8 CSR is a read-only shadow of this CSR. Access to hpmcounter8 is controlled with mcounteren.HPM8 , scounteren.HPM8 , and hcounteren.HPM8 as follows:

mcounteren.HPM8

scounteren.HPM8

hcounteren.HPM8

hpmcounter8 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

Attributes

CSR Address

0xb08

Defining extension

(Sm && HPM_COUNTER_EN[8] == true)

Length

64-bit

Privilege Mode

M

Format

mhpmcounter8 format
Figure 1. mhpmcounter8 format

Field Summary

Name Location Type Reset Value

COUNT

63:0

RW-H

UNDEFINED_LEGAL

Fields

COUNT

Location

mhpmcounter8[63:0]

Description

Performance counter for event selected in mhpmevent8.EVENT.

+ Increments every time event occurs unless:

+ * mcountinhibit.HPM8 or its alias scountinhibit.HPM8 is set * mhpmevent8.MINH is set and the current privilege level is M * mhpmevent8.SINH or its alias hpmevent8.SINH is set and the current privilege level is (H)S * mhpmevent8.UINH or its alias hpmevent8.UINH is set and the current privilege level is U * mhpmevent8.VSINH or its alias hpmevent8.VSINH is set and the current privilege level is VS * mhpmevent8.VUINH or its alias hpmevent8.VUINH is set and the current privilege level is VU

+

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

Type

RW-H

Read-Write with Hardware update

Field is writable by software. Any value that fits in the field is acceptable. Hardware also updates the field without an explicit software write.

Reset value

UNDEFINED_LEGAL

Software read

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

  • Pruned

  • Original

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