quic/qbox
Loading...
Searching...
No Matches
global_peripheral_initiator.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * Author: GreenSocs 2021
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#ifndef _LIBQBOX_COMPONENTS_GOLBAL_PERIPHERAL_INITIATOR_H
10#define _LIBQBOX_COMPONENTS_GOLBAL_PERIPHERAL_INITIATOR_H
11
12#include <ports/initiator.h>
13#include <device.h>
14#include <qemu-instance.h>
15#include <module_factory_registery.h>
16
17class global_peripheral_initiator : public QemuInitiatorIface, public sc_core::sc_module
18{
19public:
20 // QemuInitiatorIface functions
21 using TlmPayload = tlm::tlm_generic_payload;
22 virtual void initiator_customize_tlm_payload(TlmPayload& payload) override {}
23 virtual void initiator_tidy_tlm_payload(TlmPayload& payload) override {}
24 virtual sc_core::sc_time initiator_get_local_time() override { return sc_core::sc_time_stamp(); }
25 virtual void initiator_set_local_time(const sc_core::sc_time&) override {}
26
27 QemuInitiatorSocket<> m_initiator;
28 global_peripheral_initiator(const sc_core::sc_module_name& name, sc_core::sc_object* o, sc_core::sc_object* t)
29 : global_peripheral_initiator(name, *(dynamic_cast<QemuInstance*>(o)), *(dynamic_cast<QemuDevice*>(t)))
30 {
31 }
32 global_peripheral_initiator(const sc_core::sc_module_name& nm, QemuInstance& inst, QemuDevice& owner)
33 : m_initiator("global_initiator", *this, inst), m_owner(owner)
34 {
35 }
36
37 virtual void before_end_of_elaboration() override
38 {
39 qemu::Device dev = m_owner.get_qemu_dev();
40 m_initiator.init_global(dev);
41 }
42
43 virtual void initiator_async_run(qemu::Cpu::AsyncJobFn job) override {}
44
45private:
46 QemuDevice& m_owner;
47};
48
49extern "C" void module_register();
50#endif //_LIBQBOX_COMPONENTS_GOLBAL_PERIPHERAL_INITIATOR_H
QEMU device abstraction as a SystemC module.
Definition device.h:37
Definition initiator.h:38
This class encapsulates a libqemu-cxx qemu::LibQemu instance. It handles QEMU parameters and instance...
Definition qemu-instance.h:89
Definition target.h:160
Definition global_peripheral_initiator.h:18
Definition libqemu-cxx.h:616