38    sc_core::sc_vector<QemuTargetSignalSocket> irq_in;
 
   41    cci::cci_param<uint64_t> p_hartid;
 
   42    cci::cci_param<bool> p_debug;
 
   43    cci::cci_param<bool> p_pmp;
 
   44    cci::cci_param<bool> p_mmu;
 
   45    cci::cci_param<std::string> p_priv_spec;
 
   46    cci::cci_param<uint64_t> p_cbom_blocksize;
 
   47    cci::cci_param<uint64_t> p_cbop_blocksize;
 
   48    cci::cci_param<uint64_t> p_cboz_blocksize;
 
   49    cci::cci_param<uint64_t> p_mvendorid;
 
   50    cci::cci_param<uint64_t> p_mimpid;
 
   51    cci::cci_param<uint64_t> p_marchid;
 
   52    cci::cci_param<uint64_t> p_resetvec;
 
   62        , irq_in(
"irq_in", 32)
 
   64        , p_hartid(
"hartid", 
hartid, 
"Hardware thread ID")
 
   65        , p_debug(
"debug", 
true, 
"Enable debug support")
 
   66        , p_pmp(
"pmp", 
false, 
"Enable Physical Memory Protection")
 
   67        , p_mmu(
"mmu", 
true, 
"Enable Memory Management Unit")
 
   68        , p_priv_spec(
"priv_spec", 
"v1.12.0", 
"Privilege specification version")
 
   69        , p_cbom_blocksize(
"cbom_blocksize", 64, 
"Cache block management operation block size")
 
   70        , p_cbop_blocksize(
"cbop_blocksize", 64, 
"Cache block prefetch operation block size")
 
   71        , p_cboz_blocksize(
"cboz_blocksize", 64, 
"Cache block zero operation block size")
 
   72        , p_mvendorid(
"mvendorid", 0, 
"Vendor ID")
 
   73        , p_mimpid(
"mimpid", 0, 
"Implementation ID")
 
   74        , p_marchid(
"marchid", 0, 
"Architecture ID")
 
   75        , p_resetvec(
"resetvec", 0x0, 
"Reset vector address")
 
   77        m_external_ev |= m_irq_ev;
 
   78        for (
auto& irq : irq_in) {
 
   79            m_external_ev |= irq->default_event();
 
   83    void before_end_of_elaboration()
 
   85        QemuCpu::before_end_of_elaboration();
 
   88        cpu.set_prop_int(
"hartid", p_hartid);
 
   91        cpu.set_prop_int(
"resetvec", p_resetvec);
 
   92        cpu.set_prop_bool(
"debug", p_debug);
 
   93        cpu.set_prop_bool(
"pmp", p_pmp);
 
   94        cpu.set_prop_bool(
"mmu", p_mmu);
 
   95        cpu.set_prop_str(
"priv_spec", p_priv_spec.get_value().c_str());
 
   98        cpu.set_prop_int(
"cbom_blocksize", p_cbom_blocksize);
 
   99        cpu.set_prop_int(
"cbop_blocksize", p_cbop_blocksize);
 
  100        cpu.set_prop_int(
"cboz_blocksize", p_cboz_blocksize);
 
  103        cpu.set_prop_int(
"mvendorid", p_mvendorid);
 
  104        cpu.set_prop_int(
"mimpid", p_mimpid);
 
  105        cpu.set_prop_int(
"marchid", p_marchid);
 
  107        cpu.set_mip_update_callback(std::bind(&QemuCpuRiscv32::mip_update_cb, 
this, std::placeholders::_1));
 
  110    void end_of_elaboration()
 override 
  112        QemuCpu::end_of_elaboration();
 
  115        for (
int i = 0; 
i < 32; 
i++) {
 
  116            irq_in[
i].init(m_dev, 
i);
 
  121        cpu.register_reset();