quic/qbox
Loading...
Searching...
No Matches
cortex-m7.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#pragma once
10
11#include <string>
12
13#include <libqemu-cxx/target/aarch64.h>
14
15#include <module_factory_registery.h>
16
17#include <armv7m-nvic.h>
18#include <arm.h>
19
21{
22public:
23 cci::cci_param<bool> p_start_powered_off;
24 nvic_armv7m m_nvic;
25 cci::cci_param<uint64_t> p_init_nsvtor;
26
27 cpu_arm_cortexM7(const sc_core::sc_module_name& name, sc_core::sc_object* o)
28 : cpu_arm_cortexM7(name, *(dynamic_cast<QemuInstance*>(o)))
29 {
30 }
31 cpu_arm_cortexM7(sc_core::sc_module_name name, QemuInstance& inst)
32 : QemuCpuArm(name, inst, "cortex-m7-arm")
33 , m_nvic("nvic", inst)
34 , p_start_powered_off("start_powered_off", false,
35 "Start and reset the CPU "
36 "in powered-off state")
37 , p_init_nsvtor("init_nsvtor", 0ull, "Reset vector base address")
38 {
39 }
40
41 void before_end_of_elaboration() override
42 {
43 QemuCpuArm::before_end_of_elaboration();
44
45 qemu::CpuArm cpu(m_dev);
46
47 cpu.add_nvic_link();
48 cpu.set_prop_bool("start-powered-off", p_start_powered_off);
49 cpu.set_prop_int("init-nsvtor", p_init_nsvtor);
50
51 /* ensure the nvic is also created */
52 m_nvic.before_end_of_elaboration();
53
54 /* setup cpu&nvic links so that we can realize both objects */
55 qemu::Device nvic = m_nvic.get_qemu_dev();
56 cpu.set_prop_link("nvic", nvic);
57 nvic.set_prop_link("cpu", cpu);
58 }
59};
60extern "C" void module_register();
Definition arm.h:14
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 cortex-m7.h:21
Definition armv7m-nvic.h:20
Definition aarch64.h:16
Definition libqemu-cxx.h:616