@@ -647,6 +647,34 @@ static void rv64_tt_ascalon_cpu_init(Object *obj)
647
647
#endif
648
648
}
649
649
650
+ static void rv64_xiangshan_nanhu_cpu_init (Object * obj )
651
+ {
652
+ CPURISCVState * env = & RISCV_CPU (obj )-> env ;
653
+ RISCVCPU * cpu = RISCV_CPU (obj );
654
+
655
+ riscv_cpu_set_misa_ext (env , RVG | RVC | RVB | RVS | RVU );
656
+ env -> priv_ver = PRIV_VERSION_1_12_0 ;
657
+
658
+ /* Enable ISA extensions */
659
+ cpu -> cfg .ext_zbc = true;
660
+ cpu -> cfg .ext_zbkb = true;
661
+ cpu -> cfg .ext_zbkc = true;
662
+ cpu -> cfg .ext_zbkx = true;
663
+ cpu -> cfg .ext_zknd = true;
664
+ cpu -> cfg .ext_zkne = true;
665
+ cpu -> cfg .ext_zknh = true;
666
+ cpu -> cfg .ext_zksed = true;
667
+ cpu -> cfg .ext_zksh = true;
668
+ cpu -> cfg .ext_svinval = true;
669
+
670
+ cpu -> cfg .mmu = true;
671
+ cpu -> cfg .pmp = true;
672
+
673
+ #ifndef CONFIG_USER_ONLY
674
+ set_satp_mode_max_supported (cpu , VM_1_10_SV39 );
675
+ #endif
676
+ }
677
+
650
678
#ifdef CONFIG_TCG
651
679
static void rv128_base_cpu_init (Object * obj )
652
680
{
@@ -3056,6 +3084,8 @@ static const TypeInfo riscv_cpu_type_infos[] = {
3056
3084
DEFINE_VENDOR_CPU (TYPE_RISCV_CPU_THEAD_C906 , MXL_RV64 , rv64_thead_c906_cpu_init ),
3057
3085
DEFINE_VENDOR_CPU (TYPE_RISCV_CPU_TT_ASCALON , MXL_RV64 , rv64_tt_ascalon_cpu_init ),
3058
3086
DEFINE_VENDOR_CPU (TYPE_RISCV_CPU_VEYRON_V1 , MXL_RV64 , rv64_veyron_v1_cpu_init ),
3087
+ DEFINE_VENDOR_CPU (TYPE_RISCV_CPU_XIANGSHAN_NANHU ,
3088
+ MXL_RV64 , rv64_xiangshan_nanhu_cpu_init ),
3059
3089
#ifdef CONFIG_TCG
3060
3090
DEFINE_DYNAMIC_CPU (TYPE_RISCV_CPU_BASE128 , MXL_RV128 , rv128_base_cpu_init ),
3061
3091
#endif /* CONFIG_TCG */
0 commit comments