RISC-V: Add 'Ssstateen' extension and its CSRs

This commit adds 'Ssstateen' extension, which is a supervisor-visible view
of the 'Smstateen' extension.  It means, this extension implements sstateen*
and hstateen* CSRs of the 'Smstateen' extension.

Note that 'Smstateen' extension itself is unchanged but due to
implementation simplicity, it is implemented so that 'Smstateen' implies
'Ssstateen' (just like 'M' implies 'Zmmul').

This is based on the latest version of RISC-V Profiles
(version 0.9-draft, Frozen):
<226b7f6430>

bfd/ChangeLog:

	* elfxx-riscv.c (riscv_implicit_subsets): Update implication rules.
	(riscv_supported_std_s_ext) Add 'Ssstateen' extension.

gas/ChangeLog:

	* config/tc-riscv.c (enum riscv_csr_class): Rename
	CSR_CLASS_SMSTATEEN_AND_H{,_32} to CSR_CLASS_SSSTATEEN_...
	Add CSR_CLASS_SSSTATEEN.
	(riscv_csr_address): Support new/renamed CSR classes.
	* testsuite/gas/riscv/csr.s: Add 'Ssstateen' extension to comment.
	* testsuite/gas/riscv/csr-version-1p9p1.l: Reflect changes to
	error messages.
	* testsuite/gas/riscv/csr-version-1p10.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p11.l: Likewise.
	* testsuite/gas/riscv/csr-version-1p12.l: Likewise.
	* testsuite/gas/riscv/ssstateen-csr.s: Test for 'Ssstateen' CSRs.
	* testsuite/gas/riscv/ssstateen-csr.d: Likewise.
	* testsuite/gas/riscv/smstateen-csr-s.d: Test to make sure that
	supervisor/hypervisor part of 'Smstateen' CSRs are accessible from
	'RV32IH_Smstateen', not just from 'RV32IH_Ssstateen' that is tested
	in ssstateen-csr.d.

include/ChangeLog:

	* opcode/riscv-opc.h: Update DECLARE_CSR declarations with
	new CSR classes.
This commit is contained in:
Tsukasa OI 2022-10-24 10:08:15 +00:00
parent 84bcca538d
commit 15253318be
11 changed files with 182 additions and 119 deletions

View file

@ -1097,9 +1097,10 @@ static struct riscv_implicit_subset riscv_implicit_subsets[] =
{"zks", "zbkx", check_implicit_always},
{"zks", "zksed", check_implicit_always},
{"zks", "zksh", check_implicit_always},
{"smstateen", "ssstateen", check_implicit_always},
{"smepmp", "zicsr", check_implicit_always},
{"smstateen", "zicsr", check_implicit_always},
{"sscofpmf", "zicsr", check_implicit_always},
{"ssstateen", "zicsr", check_implicit_always},
{"sstc", "zicsr", check_implicit_always},
{NULL, NULL, NULL}
};
@ -1219,6 +1220,7 @@ static struct riscv_supported_ext riscv_supported_std_s_ext[] =
{"smepmp", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"smstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"sscofpmf", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"ssstateen", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"sstc", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"svinval", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },
{"svnapot", ISA_SPEC_CLASS_DRAFT, 1, 0, 0 },

View file

@ -69,9 +69,10 @@ enum riscv_csr_class
CSR_CLASS_H, /* hypervisor */
CSR_CLASS_H_32, /* hypervisor, rv32 only */
CSR_CLASS_SMSTATEEN, /* Smstateen only */
CSR_CLASS_SMSTATEEN_AND_H, /* Smstateen only (with H) */
CSR_CLASS_SMSTATEEN_32, /* Smstateen RV32 only */
CSR_CLASS_SMSTATEEN_AND_H_32, /* Smstateen RV32 only (with H) */
CSR_CLASS_SSSTATEEN, /* S[ms]stateen only */
CSR_CLASS_SSSTATEEN_AND_H, /* S[ms]stateen only (with H) */
CSR_CLASS_SSSTATEEN_AND_H_32, /* S[ms]stateen RV32 only (with H) */
CSR_CLASS_SSCOFPMF, /* Sscofpmf only */
CSR_CLASS_SSCOFPMF_32, /* Sscofpmf RV32 only */
CSR_CLASS_SSTC, /* Sstc only */
@ -1029,15 +1030,18 @@ riscv_csr_address (const char *csr_name,
extension = "zve32x";
break;
case CSR_CLASS_SMSTATEEN:
case CSR_CLASS_SMSTATEEN_AND_H:
case CSR_CLASS_SMSTATEEN_32:
case CSR_CLASS_SMSTATEEN_AND_H_32:
is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32
|| csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
is_h_required = (csr_class == CSR_CLASS_SMSTATEEN_AND_H
|| csr_class == CSR_CLASS_SMSTATEEN_AND_H_32);
is_rv32_only = (csr_class == CSR_CLASS_SMSTATEEN_32);
extension = "smstateen";
break;
case CSR_CLASS_SSSTATEEN:
case CSR_CLASS_SSSTATEEN_AND_H:
case CSR_CLASS_SSSTATEEN_AND_H_32:
is_rv32_only = (csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
is_h_required = (csr_class == CSR_CLASS_SSSTATEEN_AND_H
|| csr_class == CSR_CLASS_SSSTATEEN_AND_H_32);
extension = "ssstateen";
break;
case CSR_CLASS_SSCOFPMF_32:
is_rv32_only = true;
/* Fall through. */

View file

@ -419,30 +419,30 @@
.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
@ -461,28 +461,28 @@
.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: read-only CSR is written `csrw scountovf,a1'

View file

@ -417,30 +417,30 @@
.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
@ -459,28 +459,28 @@
.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: read-only CSR is written `csrw scountovf,a1'

View file

@ -279,30 +279,30 @@
.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
@ -321,28 +321,28 @@
.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: read-only CSR is written `csrw scountovf,a1'

View file

@ -469,30 +469,30 @@
.*Warning: invalid CSR `mstateen2', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `mstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen1', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen2', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen3', needs `smstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `sstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0', needs `h' extension
.*Warning: invalid CSR `hstateen0', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1', needs `h' extension
.*Warning: invalid CSR `hstateen1', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2', needs `h' extension
.*Warning: invalid CSR `hstateen2', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3', needs `h' extension
.*Warning: invalid CSR `hstateen3', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3', needs `ssstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
.*Warning: invalid CSR `mstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `mstateen0h', needs rv32i extension
@ -511,28 +511,28 @@
.*Warning: invalid CSR `mstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen0h', needs rv32i extension
.*Warning: invalid CSR `hstateen0h', needs `h' extension
.*Warning: invalid CSR `hstateen0h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen0h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen1h', needs rv32i extension
.*Warning: invalid CSR `hstateen1h', needs `h' extension
.*Warning: invalid CSR `hstateen1h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen1h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen2h', needs rv32i extension
.*Warning: invalid CSR `hstateen2h', needs `h' extension
.*Warning: invalid CSR `hstateen2h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen2h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `hstateen3h', needs rv32i extension
.*Warning: invalid CSR `hstateen3h', needs `h' extension
.*Warning: invalid CSR `hstateen3h', needs `smstateen' extension
.*Warning: invalid CSR `hstateen3h', needs `ssstateen' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: invalid CSR `scountovf', needs `sscofpmf' extension
.*Warning: read-only CSR is written `csrw scountovf,a1'

View file

@ -337,7 +337,7 @@
csr vsip
csr vsatp
# Smstateen extension
# Smstateen/Ssstateen extensions
csr mstateen0
csr mstateen1
csr mstateen2

View file

@ -0,0 +1,22 @@
#as: -march=rv32ih_smstateen -mcsr-check -mpriv-spec=1.12
#source: ssstateen-csr.s
#objdump: -dr
.*:[ ]+file format .*
Disassembly of section .text:
0+000 <target>:
[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0
[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1
[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2
[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3
[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,hstateen0
[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,hstateen1
[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,hstateen2
[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,hstateen3
[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,hstateen0h
[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,hstateen1h
[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,hstateen2h
[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,hstateen3h

View file

@ -0,0 +1,22 @@
#as: -march=rv32ih_ssstateen -mcsr-check -mpriv-spec=1.12
#source: ssstateen-csr.s
#objdump: -dr
.*:[ ]+file format .*
Disassembly of section .text:
0+000 <target>:
[ ]+[0-9a-f]+:[ ]+10c02573[ ]+csrr[ ]+a0,sstateen0
[ ]+[0-9a-f]+:[ ]+10d02573[ ]+csrr[ ]+a0,sstateen1
[ ]+[0-9a-f]+:[ ]+10e02573[ ]+csrr[ ]+a0,sstateen2
[ ]+[0-9a-f]+:[ ]+10f02573[ ]+csrr[ ]+a0,sstateen3
[ ]+[0-9a-f]+:[ ]+60c02573[ ]+csrr[ ]+a0,hstateen0
[ ]+[0-9a-f]+:[ ]+60d02573[ ]+csrr[ ]+a0,hstateen1
[ ]+[0-9a-f]+:[ ]+60e02573[ ]+csrr[ ]+a0,hstateen2
[ ]+[0-9a-f]+:[ ]+60f02573[ ]+csrr[ ]+a0,hstateen3
[ ]+[0-9a-f]+:[ ]+61c02573[ ]+csrr[ ]+a0,hstateen0h
[ ]+[0-9a-f]+:[ ]+61d02573[ ]+csrr[ ]+a0,hstateen1h
[ ]+[0-9a-f]+:[ ]+61e02573[ ]+csrr[ ]+a0,hstateen2h
[ ]+[0-9a-f]+:[ ]+61f02573[ ]+csrr[ ]+a0,hstateen3h

View file

@ -0,0 +1,13 @@
target:
csrr a0, sstateen0
csrr a0, sstateen1
csrr a0, sstateen2
csrr a0, sstateen3
csrr a0, hstateen0
csrr a0, hstateen1
csrr a0, hstateen2
csrr a0, hstateen3
csrr a0, hstateen0h
csrr a0, hstateen1h
csrr a0, hstateen2h
csrr a0, hstateen3h

View file

@ -3504,27 +3504,27 @@ DECLARE_CSR(vscause, CSR_VSCAUSE, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_C
DECLARE_CSR(vstval, CSR_VSTVAL, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(vsip, CSR_VSIP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(vsatp, CSR_VSATP, CSR_CLASS_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
/* Smstateen extension */
/* Smstateen/Ssstateen extensions. */
DECLARE_CSR(mstateen0, CSR_MSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen1, CSR_MSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen2, CSR_MSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen3, CSR_MSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SMSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SMSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen0, CSR_SSTATEEN0, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen1, CSR_SSTATEEN1, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen2, CSR_SSTATEEN2, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(sstateen3, CSR_SSTATEEN3, CSR_CLASS_SSSTATEEN, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen0, CSR_HSTATEEN0, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen1, CSR_HSTATEEN1, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen2, CSR_HSTATEEN2, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen3, CSR_HSTATEEN3, CSR_CLASS_SSSTATEEN_AND_H, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen0h, CSR_MSTATEEN0H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen1h, CSR_MSTATEEN1H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen2h, CSR_MSTATEEN2H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mstateen3h, CSR_MSTATEEN3H, CSR_CLASS_SMSTATEEN_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SMSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen0h, CSR_HSTATEEN0H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen1h, CSR_HSTATEEN1H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen2h, CSR_HSTATEEN2H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(hstateen3h, CSR_HSTATEEN3H, CSR_CLASS_SSSTATEEN_AND_H_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
/* Sscofpmf extension */
DECLARE_CSR(scountovf, CSR_SCOUNTOVF, CSR_CLASS_SSCOFPMF, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)
DECLARE_CSR(mhpmevent3h, CSR_MHPMEVENT3H, CSR_CLASS_SSCOFPMF_32, PRIV_SPEC_CLASS_NONE, PRIV_SPEC_CLASS_NONE)