hcounteren

Hypervisor Counter Enable

Together with scounteren, delegates control of the hardware performance-monitoring counters to VS/VU-mode

See cycle for a table describing how exceptions occur.

Attributes

Defining Extension

  • H, version >= 0

CSR Address

0x606

Length

32-bit

Privilege Mode

S

Format

hcounteren format
Figure 1. hcounteren format

Field Summary

Name Location Type Reset Value

CY

0

RW
RO
UNDEFINED_LEGAL
0

TM

1

RW
RO
UNDEFINED_LEGAL
0

IR

2

RW
RO
UNDEFINED_LEGAL
0

HPM3

3

RW
RO
UNDEFINED_LEGAL
0

HPM4

4

RW
RO
UNDEFINED_LEGAL
0

HPM5

5

RW
RO
UNDEFINED_LEGAL
0

HPM6

6

RW
RO
UNDEFINED_LEGAL
0

HPM7

7

RW
RO
UNDEFINED_LEGAL
0

HPM8

8

RW
RO
UNDEFINED_LEGAL
0

HPM9

9

RW
RO
UNDEFINED_LEGAL
0

HPM10

10

RW
RO
UNDEFINED_LEGAL
0

HPM11

11

RW
RO
UNDEFINED_LEGAL
0

HPM12

12

RW
RO
UNDEFINED_LEGAL
0

HPM13

13

RW
RO
UNDEFINED_LEGAL
0

HPM14

14

RW
RO
UNDEFINED_LEGAL
0

HPM15

15

RW
RO
UNDEFINED_LEGAL
0

HPM16

16

RW
RO
UNDEFINED_LEGAL
0

HPM17

17

RW
RO
UNDEFINED_LEGAL
0

HPM18

18

RW
RO
UNDEFINED_LEGAL
0

HPM19

19

RW
RO
UNDEFINED_LEGAL
0

HPM20

20

RW
RO
UNDEFINED_LEGAL
0

HPM21

21

RW
RO
UNDEFINED_LEGAL
0

HPM22

22

RW
RO
UNDEFINED_LEGAL
0

HPM23

23

RW
RO
UNDEFINED_LEGAL
0

HPM24

24

RW
RO
UNDEFINED_LEGAL
0

HPM25

25

RW
RO
UNDEFINED_LEGAL
0

HPM26

26

RW
RO
UNDEFINED_LEGAL
0

HPM27

27

RW
RO
UNDEFINED_LEGAL
0

HPM28

28

RW
RO
UNDEFINED_LEGAL
0

HPM29

29

RW
RO
UNDEFINED_LEGAL
0

HPM30

30

RW
RO
UNDEFINED_LEGAL
0

HPM31

31

RW
RO
UNDEFINED_LEGAL
0

Fields

CY

Location

0

Description

When all of scounteren.CY, mcounteren.CY, and hcounteren.CY are set,
the cycle CSR (an alias of mcycle) is accessible to VU-mode.

When mcounteren.CY and hcounteren.CY are set,
the cycle CSR (an alias of mcycle) is accessible to VS-mode.

When hcounteren.CY is clear and mcounteren.CY is set, then any access to cycle in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",cols="1,1,1,4,4"]
!===
.2+h! hcounteren.CY .2+h! mcounteren.CY .2+h! scounteren.CY 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

TM

Location

1

Description

When all of scounteren.TM, mcounteren.TM, and hcounteren.TM are set,
the time CSR (an alias of mtime memory-mapped CSR) is accessible to VU-mode.

When mcounteren.TM and hcounteren.TM are set,
the time CSR (an alias of mtime) is accessible to VS-mode.

When hcounteren.TM is clear and mcounteren.TM is set, then any access to time in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.TM .2+h! mcounteren.TM .2+h! scounteren.TM 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

IR

Location

2

Description

When all of scounteren.IR, mcounteren.IR, and hcounteren.IR are set,
the instret CSR (an alias of minstret) is accessible to VU-mode.

When mcounteren.IR and hcounteren.IR are set,
the instret CSR (an alias of minstret) is accessible to VS-mode.

When hcounteren.IR is clear and mcounteren.IR is set, then any access to instret in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.IR .2+h! mcounteren.IR .2+h! scounteren.IR 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM3

Location

3

Description

When all of scounteren.HPM3, mcounteren.HPM3, and hcounteren.HPM3 are set,
the hpmcounter3 CSR (an alias of mhpmcounter3) is accessible to VU-mode.

When mcounteren.HPM3 and hcounteren.HPM3 are set,
the hpmcounter3 CSR (an alias of mhpmcounter3) is accessible to VS-mode.

When hcounteren.HPM3 is clear and mcounteren.HPM3 is set, then any access to hpmcounter3 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM3 .2+h! mcounteren.HPM3 .2+h! scounteren.HPM3 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM4

Location

4

Description

When all of scounteren.HPM4, mcounteren.HPM4, and hcounteren.HPM4 are set,
the hpmcounter4 CSR (an alias of mhpmcounter4) is accessible to VU-mode.

When mcounteren.HPM4 and hcounteren.HPM4 are set,
the hpmcounter4 CSR (an alias of mhpmcounter4) is accessible to VS-mode.

When hcounteren.HPM4 is clear and mcounteren.HPM4 is set, then any access to hpmcounter4 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM4 .2+h! mcounteren.HPM4 .2+h! scounteren.HPM4 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM5

Location

5

Description

When all of scounteren.HPM5, mcounteren.HPM5, and hcounteren.HPM5 are set,
the hpmcounter5 CSR (an alias of mhpmcounter5) is accessible to VU-mode.

When mcounteren.HPM5 and hcounteren.HPM5 are set,
the hpmcounter5 CSR (an alias of mhpmcounter5) is accessible to VS-mode.

When hcounteren.HPM5 is clear and mcounteren.HPM5 is set, then any access to hpmcounter5 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM5 .2+h! mcounteren.HPM5 .2+h! scounteren.HPM5 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM6

Location

6

Description

When all of scounteren.HPM6, mcounteren.HPM6, and hcounteren.HPM6 are set,
the hpmcounter6 CSR (an alias of mhpmcounter6) is accessible to VU-mode.

When mcounteren.HPM6 and hcounteren.HPM6 are set,
the hpmcounter6 CSR (an alias of mhpmcounter6) is accessible to VS-mode.

When hcounteren.HPM6 is clear and mcounteren.HPM6 is set, then any access to hpmcounter6 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM6 .2+h! mcounteren.HPM6 .2+h! scounteren.HPM6 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM7

Location

7

Description

When all of scounteren.HPM7, mcounteren.HPM7, and hcounteren.HPM7 are set,
the hpmcounter7 CSR (an alias of mhpmcounter7) is accessible to VU-mode.

When mcounteren.HPM7 and hcounteren.HPM7 are set,
the hpmcounter7 CSR (an alias of mhpmcounter7) is accessible to VS-mode.

When hcounteren.HPM7 is clear and mcounteren.HPM7 is set, then any access to hpmcounter7 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM7 .2+h! mcounteren.HPM7 .2+h! scounteren.HPM7 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM8

Location

8

Description

When all of scounteren.HPM8, mcounteren.HPM8, and hcounteren.HPM8 are set,
the hpmcounter8 CSR (an alias of mhpmcounter8) is accessible to VU-mode.

When mcounteren.HPM8 and hcounteren.HPM8 are set,
the hpmcounter8 CSR (an alias of mhpmcounter8) is accessible to VS-mode.

When hcounteren.HPM8 is clear and mcounteren.HPM8 is set, then any access to hpmcounter8 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM8 .2+h! mcounteren.HPM8 .2+h! scounteren.HPM8 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM9

Location

9

Description

When all of scounteren.HPM9, mcounteren.HPM9, and hcounteren.HPM9 are set,
the hpmcounter9 CSR (an alias of mhpmcounter9) is accessible to VU-mode.

When mcounteren.HPM9 and hcounteren.HPM9 are set,
the hpmcounter9 CSR (an alias of mhpmcounter9) is accessible to VS-mode.

When hcounteren.HPM9 is clear and mcounteren.HPM9 is set, then any access to hpmcounter9 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM9 .2+h! mcounteren.HPM9 .2+h! scounteren.HPM9 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM10

Location

10

Description

When all of scounteren.HPM10, mcounteren.HPM10, and hcounteren.HPM10 are set,
the hpmcounter10 CSR (an alias of mhpmcounter10) is accessible to VU-mode.

When mcounteren.HPM10 and hcounteren.HPM10 are set,
the hpmcounter10 CSR (an alias of mhpmcounter10) is accessible to VS-mode.

When hcounteren.HPM10 is clear and mcounteren.HPM10 is set, then any access to hpmcounter10 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM10 .2+h! mcounteren.HPM10 .2+h! scounteren.HPM10 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM11

Location

11

Description

When all of scounteren.HPM11, mcounteren.HPM11, and hcounteren.HPM11 are set,
the hpmcounter11 CSR (an alias of mhpmcounter11) is accessible to VU-mode.

When mcounteren.HPM11 and hcounteren.HPM11 are set,
the hpmcounter11 CSR (an alias of mhpmcounter11) is accessible to VS-mode.

When hcounteren.HPM11 is clear and mcounteren.HPM11 is set, then any access to hpmcounter11 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM11 .2+h! mcounteren.HPM11 .2+h! scounteren.HPM11 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM12

Location

12

Description

When all of scounteren.HPM12, mcounteren.HPM12, and hcounteren.HPM12 are set,
the hpmcounter12 CSR (an alias of mhpmcounter12) is accessible to VU-mode.

When mcounteren.HPM12 and hcounteren.HPM12 are set,
the hpmcounter12 CSR (an alias of mhpmcounter12) is accessible to VS-mode.

When hcounteren.HPM12 is clear and mcounteren.HPM12 is set, then any access to hpmcounter12 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM12 .2+h! mcounteren.HPM12 .2+h! scounteren.HPM12 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM13

Location

13

Description

When all of scounteren.HPM13, mcounteren.HPM13, and hcounteren.HPM13 are set,
the hpmcounter13 CSR (an alias of mhpmcounter13) is accessible to VU-mode.

When mcounteren.HPM13 and hcounteren.HPM13 are set,
the hpmcounter13 CSR (an alias of mhpmcounter13) is accessible to VS-mode.

When hcounteren.HPM13 is clear and mcounteren.HPM13 is set, then any access to hpmcounter13 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM13 .2+h! mcounteren.HPM13 .2+h! scounteren.HPM13 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM14

Location

14

Description

When all of scounteren.HPM14, mcounteren.HPM14, and hcounteren.HPM14 are set,
the hpmcounter14 CSR (an alias of mhpmcounter14) is accessible to VU-mode.

When mcounteren.HPM14 and hcounteren.HPM14 are set,
the hpmcounter14 CSR (an alias of mhpmcounter14) is accessible to VS-mode.

When hcounteren.HPM14 is clear and mcounteren.HPM14 is set, then any access to hpmcounter14 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM14 .2+h! mcounteren.HPM14 .2+h! scounteren.HPM14 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM15

Location

15

Description

When all of scounteren.HPM15, mcounteren.HPM15, and hcounteren.HPM15 are set,
the hpmcounter15 CSR (an alias of mhpmcounter15) is accessible to VU-mode.

When mcounteren.HPM15 and hcounteren.HPM15 are set,
the hpmcounter15 CSR (an alias of mhpmcounter15) is accessible to VS-mode.

When hcounteren.HPM15 is clear and mcounteren.HPM15 is set, then any access to hpmcounter15 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM15 .2+h! mcounteren.HPM15 .2+h! scounteren.HPM15 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM16

Location

16

Description

When all of scounteren.HPM16, mcounteren.HPM16, and hcounteren.HPM16 are set,
the hpmcounter16 CSR (an alias of mhpmcounter16) is accessible to VU-mode.

When mcounteren.HPM16 and hcounteren.HPM16 are set,
the hpmcounter16 CSR (an alias of mhpmcounter16) is accessible to VS-mode.

When hcounteren.HPM16 is clear and mcounteren.HPM16 is set, then any access to hpmcounter16 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM16 .2+h! mcounteren.HPM16 .2+h! scounteren.HPM16 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM17

Location

17

Description

When all of scounteren.HPM17, mcounteren.HPM17, and hcounteren.HPM17 are set,
the hpmcounter17 CSR (an alias of mhpmcounter17) is accessible to VU-mode.

When mcounteren.HPM17 and hcounteren.HPM17 are set,
the hpmcounter17 CSR (an alias of mhpmcounter17) is accessible to VS-mode.

When hcounteren.HPM17 is clear and mcounteren.HPM17 is set, then any access to hpmcounter17 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM17 .2+h! mcounteren.HPM17 .2+h! scounteren.HPM17 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM18

Location

18

Description

When all of scounteren.HPM18, mcounteren.HPM18, and hcounteren.HPM18 are set,
the hpmcounter18 CSR (an alias of mhpmcounter18) is accessible to VU-mode.

When mcounteren.HPM18 and hcounteren.HPM18 are set,
the hpmcounter18 CSR (an alias of mhpmcounter18) is accessible to VS-mode.

When hcounteren.HPM18 is clear and mcounteren.HPM18 is set, then any access to hpmcounter18 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM18 .2+h! mcounteren.HPM18 .2+h! scounteren.HPM18 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM19

Location

19

Description

When all of scounteren.HPM19, mcounteren.HPM19, and hcounteren.HPM19 are set,
the hpmcounter19 CSR (an alias of mhpmcounter19) is accessible to VU-mode.

When mcounteren.HPM19 and hcounteren.HPM19 are set,
the hpmcounter19 CSR (an alias of mhpmcounter19) is accessible to VS-mode.

When hcounteren.HPM19 is clear and mcounteren.HPM19 is set, then any access to hpmcounter19 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM19 .2+h! mcounteren.HPM19 .2+h! scounteren.HPM19 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM20

Location

20

Description

When all of scounteren.HPM20, mcounteren.HPM20, and hcounteren.HPM20 are set,
the hpmcounter20 CSR (an alias of mhpmcounter20) is accessible to VU-mode.

When mcounteren.HPM20 and hcounteren.HPM20 are set,
the hpmcounter20 CSR (an alias of mhpmcounter20) is accessible to VS-mode.

When hcounteren.HPM20 is clear and mcounteren.HPM20 is set, then any access to hpmcounter20 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM20 .2+h! mcounteren.HPM20 .2+h! scounteren.HPM20 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM21

Location

21

Description

When all of scounteren.HPM21, mcounteren.HPM21, and hcounteren.HPM21 are set,
the hpmcounter21 CSR (an alias of mhpmcounter21) is accessible to VU-mode.

When mcounteren.HPM21 and hcounteren.HPM21 are set,
the hpmcounter21 CSR (an alias of mhpmcounter21) is accessible to VS-mode.

When hcounteren.HPM21 is clear and mcounteren.HPM21 is set, then any access to hpmcounter21 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM21 .2+h! mcounteren.HPM21 .2+h! scounteren.HPM21 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM22

Location

22

Description

When all of scounteren.HPM22, mcounteren.HPM22, and hcounteren.HPM22 are set,
the hpmcounter22 CSR (an alias of mhpmcounter22) is accessible to VU-mode.

When mcounteren.HPM22 and hcounteren.HPM22 are set,
the hpmcounter22 CSR (an alias of mhpmcounter22) is accessible to VS-mode.

When hcounteren.HPM22 is clear and mcounteren.HPM22 is set, then any access to hpmcounter22 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM22 .2+h! mcounteren.HPM22 .2+h! scounteren.HPM22 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM23

Location

23

Description

When all of scounteren.HPM23, mcounteren.HPM23, and hcounteren.HPM23 are set,
the hpmcounter23 CSR (an alias of mhpmcounter23) is accessible to VU-mode.

When mcounteren.HPM23 and hcounteren.HPM23 are set,
the hpmcounter23 CSR (an alias of mhpmcounter23) is accessible to VS-mode.

When hcounteren.HPM23 is clear and mcounteren.HPM23 is set, then any access to hpmcounter23 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM23 .2+h! mcounteren.HPM23 .2+h! scounteren.HPM23 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM24

Location

24

Description

When all of scounteren.HPM24, mcounteren.HPM24, and hcounteren.HPM24 are set,
the hpmcounter24 CSR (an alias of mhpmcounter24) is accessible to VU-mode.

When mcounteren.HPM24 and hcounteren.HPM24 are set,
the hpmcounter24 CSR (an alias of mhpmcounter24) is accessible to VS-mode.

When hcounteren.HPM24 is clear and mcounteren.HPM24 is set, then any access to hpmcounter24 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM24 .2+h! mcounteren.HPM24 .2+h! scounteren.HPM24 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM25

Location

25

Description

When all of scounteren.HPM25, mcounteren.HPM25, and hcounteren.HPM25 are set,
the hpmcounter25 CSR (an alias of mhpmcounter25) is accessible to VU-mode.

When mcounteren.HPM25 and hcounteren.HPM25 are set,
the hpmcounter25 CSR (an alias of mhpmcounter25) is accessible to VS-mode.

When hcounteren.HPM25 is clear and mcounteren.HPM25 is set, then any access to hpmcounter25 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM25 .2+h! mcounteren.HPM25 .2+h! scounteren.HPM25 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM26

Location

26

Description

When all of scounteren.HPM26, mcounteren.HPM26, and hcounteren.HPM26 are set,
the hpmcounter26 CSR (an alias of mhpmcounter26) is accessible to VU-mode.

When mcounteren.HPM26 and hcounteren.HPM26 are set,
the hpmcounter26 CSR (an alias of mhpmcounter26) is accessible to VS-mode.

When hcounteren.HPM26 is clear and mcounteren.HPM26 is set, then any access to hpmcounter26 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM26 .2+h! mcounteren.HPM26 .2+h! scounteren.HPM26 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM27

Location

27

Description

When all of scounteren.HPM27, mcounteren.HPM27, and hcounteren.HPM27 are set,
the hpmcounter27 CSR (an alias of mhpmcounter27) is accessible to VU-mode.

When mcounteren.HPM27 and hcounteren.HPM27 are set,
the hpmcounter27 CSR (an alias of mhpmcounter27) is accessible to VS-mode.

When hcounteren.HPM27 is clear and mcounteren.HPM27 is set, then any access to hpmcounter27 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM27 .2+h! mcounteren.HPM27 .2+h! scounteren.HPM27 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM28

Location

28

Description

When all of scounteren.HPM28, mcounteren.HPM28, and hcounteren.HPM28 are set,
the hpmcounter28 CSR (an alias of mhpmcounter28) is accessible to VU-mode.

When mcounteren.HPM28 and hcounteren.HPM28 are set,
the hpmcounter28 CSR (an alias of mhpmcounter28) is accessible to VS-mode.

When hcounteren.HPM28 is clear and mcounteren.HPM28 is set, then any access to hpmcounter28 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM28 .2+h! mcounteren.HPM28 .2+h! scounteren.HPM28 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM29

Location

29

Description

When all of scounteren.HPM29, mcounteren.HPM29, and hcounteren.HPM29 are set,
the hpmcounter29 CSR (an alias of mhpmcounter29) is accessible to VU-mode.

When mcounteren.HPM29 and hcounteren.HPM29 are set,
the hpmcounter29 CSR (an alias of mhpmcounter29) is accessible to VS-mode.

When hcounteren.HPM29 is clear and mcounteren.HPM29 is set, then any access to hpmcounter29 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM29 .2+h! mcounteren.HPM29 .2+h! scounteren.HPM29 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM30

Location

30

Description

When all of scounteren.HPM30, mcounteren.HPM30, and hcounteren.HPM30 are set,
the hpmcounter30 CSR (an alias of mhpmcounter30) is accessible to VU-mode.

When mcounteren.HPM30 and hcounteren.HPM30 are set,
the hpmcounter30 CSR (an alias of mhpmcounter30) is accessible to VS-mode.

When hcounteren.HPM30 is clear and mcounteren.HPM30 is set, then any access to hpmcounter30 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM30 .2+h! mcounteren.HPM30 .2+h! scounteren.HPM30 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0

HPM31

Location

31

Description

When all of scounteren.HPM31, mcounteren.HPM31, and hcounteren.HPM31 are set,
the hpmcounter31 CSR (an alias of mhpmcounter31) is accessible to VU-mode.

When mcounteren.HPM31 and hcounteren.HPM31 are set,
the hpmcounter31 CSR (an alias of mhpmcounter31) is accessible to VS-mode.

When hcounteren.HPM31 is clear and mcounteren.HPM31 is set, then any access to hpmcounter31 in
VU-mode or VS-mode causes a VirtualInstruction execption.

Summary:

[separator="!",%autowidth]
!===
.2+h! hcounteren.HPM31 .2+h! mcounteren.HPM31 .2+h! scounteren.HPM31 2+^.>! cycle access behavior
.>h! VS-mode .>h! VU-mode

! 0 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 0 ! 1 ! - ! VirtualInstruction ! VirtualInstruction
! 1 ! 0 ! - ! IllegalInstruction ! IllegalInstruction
! 1 ! 1 ! 0 ! allowed ! VirtualInstruction
! 1 ! 1 ! 1 ! allowed ! allowed
!===

Type
RW
RO
Reset value
UNDEFINED_LEGAL
0