quic/qbox
Loading...
Searching...
No Matches
riscv-aclint-swi.h
1/*
2 * This file is part of libqbox
3 * Copyright (c) 2022-2023 Qualcomm Innovation Center, Inc. All Rights Reserved.
4 * Author: GreenSocs 2022
5 *
6 * SPDX-License-Identifier: BSD-3-Clause
7 */
8
9#pragma once
10
11#include <vector>
12
13#include <cci_configuration>
14
15#include <libqemu-cxx/target/riscv.h>
16#include <module_factory_registery.h>
17
18#include <ports/target.h>
19#include <device.h>
20
22{
23public:
24 cci::cci_param<unsigned int> p_num_harts;
25
26 QemuTargetSocket<> socket;
27
28 riscv_aclint_swi(const sc_core::sc_module_name& name, sc_core::sc_object* o, sc_core::sc_object* t)
29 : riscv_aclint_swi(name, *(dynamic_cast<QemuInstance*>(o)))
30 {
31 }
32 riscv_aclint_swi(sc_core::sc_module_name nm, QemuInstance& inst)
33 : QemuDevice(nm, inst, "riscv.aclint.swi")
34 , p_num_harts("num_harts", 0, "Number of HARTS this CLINT is connected to")
35 , socket("mem", inst)
36 {
37 }
38
39 void before_end_of_elaboration() override
40 {
41 QemuDevice::before_end_of_elaboration();
42
43 m_dev.set_prop_int("num-harts", p_num_harts);
44 }
45
46 void end_of_elaboration() override
47 {
48 QemuDevice::set_sysbus_as_parent_bus();
49 QemuDevice::end_of_elaboration();
50
51 qemu::SysBusDevice sbd(get_qemu_dev());
52 socket.init(qemu::SysBusDevice(m_dev), 0);
53 }
54};
55
56extern "C" void module_register();
QEMU device abstraction as a SystemC module.
Definition device.h:37
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 libqemu-cxx.h:638
Definition riscv-aclint-swi.h:22