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

hcounteren.CY

0

[when,"HCOUNTENABLE_EN[0]"] RW [when,"!(HCOUNTENABLE_EN[0])"] RO

[when,"HCOUNTENABLE_EN[0]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[0])"] 0

hcounteren.TM

1

[when,"HCOUNTENABLE_EN[1]"] RW [when,"!(HCOUNTENABLE_EN[1])"] RO

[when,"HCOUNTENABLE_EN[1]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[1])"] 0

hcounteren.IR

2

[when,"HCOUNTENABLE_EN[2]"] RW [when,"!(HCOUNTENABLE_EN[2])"] RO

[when,"HCOUNTENABLE_EN[2]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[2])"] 0

hcounteren.HPM3

3

[when,"HCOUNTENABLE_EN[3]"] RW [when,"!(HCOUNTENABLE_EN[3])"] RO

[when,"HCOUNTENABLE_EN[3]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[3])"] 0

hcounteren.HPM4

4

[when,"HCOUNTENABLE_EN[4]"] RW [when,"!(HCOUNTENABLE_EN[4])"] RO

[when,"HCOUNTENABLE_EN[4]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[4])"] 0

hcounteren.HPM5

5

[when,"HCOUNTENABLE_EN[5]"] RW [when,"!(HCOUNTENABLE_EN[5])"] RO

[when,"HCOUNTENABLE_EN[5]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[5])"] 0

hcounteren.HPM6

6

[when,"HCOUNTENABLE_EN[6]"] RW [when,"!(HCOUNTENABLE_EN[6])"] RO

[when,"HCOUNTENABLE_EN[6]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[6])"] 0

hcounteren.HPM7

7

[when,"HCOUNTENABLE_EN[7]"] RW [when,"!(HCOUNTENABLE_EN[7])"] RO

[when,"HCOUNTENABLE_EN[7]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[7])"] 0

hcounteren.HPM8

8

[when,"HCOUNTENABLE_EN[8]"] RW [when,"!(HCOUNTENABLE_EN[8])"] RO

[when,"HCOUNTENABLE_EN[8]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[8])"] 0

hcounteren.HPM9

9

[when,"HCOUNTENABLE_EN[9]"] RW [when,"!(HCOUNTENABLE_EN[9])"] RO

[when,"HCOUNTENABLE_EN[9]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[9])"] 0

hcounteren.HPM10

10

[when,"HCOUNTENABLE_EN[10]"] RW [when,"!(HCOUNTENABLE_EN[10])"] RO

[when,"HCOUNTENABLE_EN[10]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[10])"] 0

hcounteren.HPM11

11

[when,"HCOUNTENABLE_EN[11]"] RW [when,"!(HCOUNTENABLE_EN[11])"] RO

[when,"HCOUNTENABLE_EN[11]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[11])"] 0

hcounteren.HPM12

12

[when,"HCOUNTENABLE_EN[12]"] RW [when,"!(HCOUNTENABLE_EN[12])"] RO

[when,"HCOUNTENABLE_EN[12]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[12])"] 0

hcounteren.HPM13

13

[when,"HCOUNTENABLE_EN[13]"] RW [when,"!(HCOUNTENABLE_EN[13])"] RO

[when,"HCOUNTENABLE_EN[13]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[13])"] 0

hcounteren.HPM14

14

[when,"HCOUNTENABLE_EN[14]"] RW [when,"!(HCOUNTENABLE_EN[14])"] RO

[when,"HCOUNTENABLE_EN[14]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[14])"] 0

hcounteren.HPM15

15

[when,"HCOUNTENABLE_EN[15]"] RW [when,"!(HCOUNTENABLE_EN[15])"] RO

[when,"HCOUNTENABLE_EN[15]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[15])"] 0

hcounteren.HPM16

16

[when,"HCOUNTENABLE_EN[16]"] RW [when,"!(HCOUNTENABLE_EN[16])"] RO

[when,"HCOUNTENABLE_EN[16]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[16])"] 0

hcounteren.HPM17

17

[when,"HCOUNTENABLE_EN[17]"] RW [when,"!(HCOUNTENABLE_EN[17])"] RO

[when,"HCOUNTENABLE_EN[17]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[17])"] 0

hcounteren.HPM18

18

[when,"HCOUNTENABLE_EN[18]"] RW [when,"!(HCOUNTENABLE_EN[18])"] RO

[when,"HCOUNTENABLE_EN[18]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[18])"] 0

hcounteren.HPM19

19

[when,"HCOUNTENABLE_EN[19]"] RW [when,"!(HCOUNTENABLE_EN[19])"] RO

[when,"HCOUNTENABLE_EN[19]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[19])"] 0

hcounteren.HPM20

20

[when,"HCOUNTENABLE_EN[20]"] RW [when,"!(HCOUNTENABLE_EN[20])"] RO

[when,"HCOUNTENABLE_EN[20]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[20])"] 0

hcounteren.HPM21

21

[when,"HCOUNTENABLE_EN[21]"] RW [when,"!(HCOUNTENABLE_EN[21])"] RO

[when,"HCOUNTENABLE_EN[21]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[21])"] 0

hcounteren.HPM22

22

[when,"HCOUNTENABLE_EN[22]"] RW [when,"!(HCOUNTENABLE_EN[22])"] RO

[when,"HCOUNTENABLE_EN[22]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[22])"] 0

hcounteren.HPM23

23

[when,"HCOUNTENABLE_EN[23]"] RW [when,"!(HCOUNTENABLE_EN[23])"] RO

[when,"HCOUNTENABLE_EN[23]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[23])"] 0

hcounteren.HPM24

24

[when,"HCOUNTENABLE_EN[24]"] RW [when,"!(HCOUNTENABLE_EN[24])"] RO

[when,"HCOUNTENABLE_EN[24]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[24])"] 0

hcounteren.HPM25

25

[when,"HCOUNTENABLE_EN[25]"] RW [when,"!(HCOUNTENABLE_EN[25])"] RO

[when,"HCOUNTENABLE_EN[25]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[25])"] 0

hcounteren.HPM26

26

[when,"HCOUNTENABLE_EN[26]"] RW [when,"!(HCOUNTENABLE_EN[26])"] RO

[when,"HCOUNTENABLE_EN[26]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[26])"] 0

hcounteren.HPM27

27

[when,"HCOUNTENABLE_EN[27]"] RW [when,"!(HCOUNTENABLE_EN[27])"] RO

[when,"HCOUNTENABLE_EN[27]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[27])"] 0

hcounteren.HPM28

28

[when,"HCOUNTENABLE_EN[28]"] RW [when,"!(HCOUNTENABLE_EN[28])"] RO

[when,"HCOUNTENABLE_EN[28]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[28])"] 0

hcounteren.HPM29

29

[when,"HCOUNTENABLE_EN[29]"] RW [when,"!(HCOUNTENABLE_EN[29])"] RO

[when,"HCOUNTENABLE_EN[29]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[29])"] 0

hcounteren.HPM30

30

[when,"HCOUNTENABLE_EN[30]"] RW [when,"!(HCOUNTENABLE_EN[30])"] RO

[when,"HCOUNTENABLE_EN[30]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[30])"] 0

hcounteren.HPM31

31

[when,"HCOUNTENABLE_EN[31]"] RW [when,"!(HCOUNTENABLE_EN[31])"] RO

[when,"HCOUNTENABLE_EN[31]"] UNDEFINED_LEGAL [when,"!(HCOUNTENABLE_EN[31])"] 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 exception.

Summary:

hcounteren.CY

mcounteren.CY

scounteren.CY

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.TM

mcounteren.TM

scounteren.TM

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.IR

mcounteren.IR

scounteren.IR

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM3

mcounteren.HPM3

scounteren.HPM3

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM4

mcounteren.HPM4

scounteren.HPM4

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM5

mcounteren.HPM5

scounteren.HPM5

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM6

mcounteren.HPM6

scounteren.HPM6

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM7

mcounteren.HPM7

scounteren.HPM7

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM8

mcounteren.HPM8

scounteren.HPM8

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM9

mcounteren.HPM9

scounteren.HPM9

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM10

mcounteren.HPM10

scounteren.HPM10

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM11

mcounteren.HPM11

scounteren.HPM11

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM12

mcounteren.HPM12

scounteren.HPM12

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM13

mcounteren.HPM13

scounteren.HPM13

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM14

mcounteren.HPM14

scounteren.HPM14

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM15

mcounteren.HPM15

scounteren.HPM15

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM16

mcounteren.HPM16

scounteren.HPM16

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM17

mcounteren.HPM17

scounteren.HPM17

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM18

mcounteren.HPM18

scounteren.HPM18

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM19

mcounteren.HPM19

scounteren.HPM19

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM20

mcounteren.HPM20

scounteren.HPM20

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM21

mcounteren.HPM21

scounteren.HPM21

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM22

mcounteren.HPM22

scounteren.HPM22

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM23

mcounteren.HPM23

scounteren.HPM23

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM24

mcounteren.HPM24

scounteren.HPM24

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM25

mcounteren.HPM25

scounteren.HPM25

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM26

mcounteren.HPM26

scounteren.HPM26

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM27

mcounteren.HPM27

scounteren.HPM27

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM28

mcounteren.HPM28

scounteren.HPM28

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM29

mcounteren.HPM29

scounteren.HPM29

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM30

mcounteren.HPM30

scounteren.HPM30

cycle access behavior

VS-mode

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 exception.

Summary:

hcounteren.HPM31

mcounteren.HPM31

scounteren.HPM31

cycle access behavior

VS-mode

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