10#include <cci_configuration> 
   11#include <libqemu-cxx/target/aarch64.h> 
   14#include <ports/target.h> 
   15#include <ports/qemu-target-signal-socket.h> 
   16#include <ports/qemu-initiator-signal-socket.h> 
   17#include <module_factory_registery.h> 
   22    bool before_end_of_elaboration_done;
 
   25    cci::cci_param<uint32_t> p_num_irq;
 
   26    cci::cci_param<uint8_t> p_num_prio_bits;
 
   28    sc_core::sc_vector<QemuTargetSignalSocket> irq_in;
 
   34    nvic_armv7m(
const sc_core::sc_module_name& name, sc_core::sc_object* 
o)
 
   40        , before_end_of_elaboration_done(
false)
 
   41        , p_num_irq(
"num_irq", 64, 
"Number of external interrupts")
 
   42        , p_num_prio_bits(
"num_prio_bits", 0,
 
   43                          "Number of the maximum priority bits that can be used. 0 means to use a reasonable default")
 
   45        , irq_in(
"irq_in", p_num_irq)
 
   47        , NS_SysTick(
"NS_SysTick")
 
   48        , S_SysTick(
"S_SysTick")
 
   53    void before_end_of_elaboration()
 override 
   55        if (before_end_of_elaboration_done) {
 
   59        QemuDevice::before_end_of_elaboration();
 
   60        before_end_of_elaboration_done = 
true;
 
   66        m_dev.set_prop_int(
"num-irq", p_num_irq);
 
   67        m_dev.set_prop_int(
"num-prio-bits", p_num_prio_bits);
 
   70    void end_of_elaboration()
 override 
   80        QemuDevice::set_sysbus_as_parent_bus();
 
   81        QemuDevice::end_of_elaboration();
 
   89        for (
int i = 0; 
i < p_num_irq; 
i++) {
 
   90            irq_in[
i].init(m_dev, 
i);
 
   96        NS_SysTick.
init_named(m_dev, 
"systick-trigger", 0);
 
   97        S_SysTick.
init_named(m_dev, 
"systick-trigger", 1);
 
 
  101extern "C" void module_register();
 
QEMU device abstraction as a SystemC module.
Definition device.h:37
A QEMU output GPIO exposed as a InitiatorSignalSocket<bool>
Definition qemu-initiator-signal-socket.h:40
void init_sbd(qemu::SysBusDevice sbd, int gpio_idx)
Initialize this socket with a QEMU SysBusDevice, and a GPIO index.
Definition qemu-initiator-signal-socket.h:173
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:89
A QEMU input GPIO exposed as a TargetSignalSocket<bool>
Definition qemu-target-signal-socket.h:29
void init_named(qemu::Device dev, const char *gpio_name, int gpio_idx)
Initialize this socket with a device, a GPIO namespace, and a GPIO index.
Definition qemu-target-signal-socket.h:78
Definition armv7m-nvic.h:20
Definition libqemu-cxx.h:627