|
@@ -2415,10 +2415,41 @@ static RISCVCPUProfile RVA23U64 = {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+/*
|
|
|
+ * As with RVA23U64, RVA23S64 also defines 'named features'.
|
|
|
+ *
|
|
|
+ * Cache related features that we consider enabled since we don't
|
|
|
+ * implement cache: Ssccptr
|
|
|
+ *
|
|
|
+ * Other named features that we already implement: Sstvecd, Sstvala,
|
|
|
+ * Sscounterenw, Ssu64xl
|
|
|
+ *
|
|
|
+ * The remaining features/extensions comes from RVA23S64.
|
|
|
+ */
|
|
|
+static RISCVCPUProfile RVA23S64 = {
|
|
|
+ .u_parent = &RVA23U64,
|
|
|
+ .s_parent = &RVA22S64,
|
|
|
+ .name = "rva23s64",
|
|
|
+ .misa_ext = RVS,
|
|
|
+ .priv_spec = PRIV_VERSION_1_13_0,
|
|
|
+ .satp_mode = VM_1_10_SV39,
|
|
|
+ .ext_offsets = {
|
|
|
+ /* New in RVA23S64 */
|
|
|
+ CPU_CFG_OFFSET(ext_svnapot), CPU_CFG_OFFSET(ext_sstc),
|
|
|
+ CPU_CFG_OFFSET(ext_sscofpmf), CPU_CFG_OFFSET(ext_ssnpm),
|
|
|
+
|
|
|
+ /* Named features: Sha */
|
|
|
+ CPU_CFG_OFFSET(ext_sha),
|
|
|
+
|
|
|
+ RISCV_PROFILE_EXT_LIST_END
|
|
|
+ }
|
|
|
+};
|
|
|
+
|
|
|
RISCVCPUProfile *riscv_profiles[] = {
|
|
|
&RVA22U64,
|
|
|
&RVA22S64,
|
|
|
&RVA23U64,
|
|
|
+ &RVA23S64,
|
|
|
NULL,
|
|
|
};
|
|
|
|
|
@@ -2912,6 +2943,13 @@ static void rva23u64_profile_cpu_init(Object *obj)
|
|
|
|
|
|
RVA23U64.enabled = true;
|
|
|
}
|
|
|
+
|
|
|
+static void rva23s64_profile_cpu_init(Object *obj)
|
|
|
+{
|
|
|
+ rv64i_bare_cpu_init(obj);
|
|
|
+
|
|
|
+ RVA23S64.enabled = true;
|
|
|
+}
|
|
|
#endif
|
|
|
|
|
|
static const gchar *riscv_gdb_arch_name(CPUState *cs)
|
|
@@ -3183,6 +3221,7 @@ static const TypeInfo riscv_cpu_type_infos[] = {
|
|
|
DEFINE_PROFILE_CPU(TYPE_RISCV_CPU_RVA22U64, MXL_RV64, rva22u64_profile_cpu_init),
|
|
|
DEFINE_PROFILE_CPU(TYPE_RISCV_CPU_RVA22S64, MXL_RV64, rva22s64_profile_cpu_init),
|
|
|
DEFINE_PROFILE_CPU(TYPE_RISCV_CPU_RVA23U64, MXL_RV64, rva23u64_profile_cpu_init),
|
|
|
+ DEFINE_PROFILE_CPU(TYPE_RISCV_CPU_RVA23S64, MXL_RV64, rva23s64_profile_cpu_init),
|
|
|
#endif /* TARGET_RISCV64 */
|
|
|
};
|
|
|
|