From: Brian Cain <brian.cain@oss.qualcomm.com>
To: qemu-devel@nongnu.org, stefanha@redhat.com, peter.maydell@linaro.org
Cc: brian.cain@oss.qualcomm.com, "Brian Cain" <bcain@quicinc.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Mike Lambert" <mlambert@quicinc.com>,
"Sid Manning" <sidneym@quicinc.com>,
"Pierrick Bouvier" <pierrick.bouvier@oss.qualcomm.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PULL v5 72/77] hw/hexagon: Add machine configs for sysemu
Date: Mon, 29 Jun 2026 06:12:27 -0700 [thread overview]
Message-ID: <20260629131232.2487780-73-brian.cain@oss.qualcomm.com> (raw)
In-Reply-To: <20260629131232.2487780-1-brian.cain@oss.qualcomm.com>
From: Brian Cain <bcain@quicinc.com>
Some header includes are modified here: these are uniquely required for
basic system emulation functionality and had not been required for linux-user.
Acked-by: Markus Armbruster <armbru@redhat.com>
Co-authored-by: Mike Lambert <mlambert@quicinc.com>
Co-authored-by: Sid Manning <sidneym@quicinc.com>
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
Signed-off-by: Brian Cain <brian.cain@oss.qualcomm.com>
---
MAINTAINERS | 12 ++
include/hw/hexagon/hexagon.h | 161 ++++++++++++++++++
hw/hexagon/machine_cfg_v66g_1024.h.inc | 64 +++++++
hw/hexagon/hexagon_dsp.c | 221 +++++++++++++++++++++++++
system/qdev-monitor.c | 2 +-
target/hexagon/translate.c | 1 +
hw/Kconfig | 1 +
hw/hexagon/Kconfig | 4 +
hw/hexagon/meson.build | 6 +
hw/meson.build | 1 +
10 files changed, 472 insertions(+), 1 deletion(-)
create mode 100644 include/hw/hexagon/hexagon.h
create mode 100644 hw/hexagon/machine_cfg_v66g_1024.h.inc
create mode 100644 hw/hexagon/hexagon_dsp.c
create mode 100644 hw/hexagon/Kconfig
create mode 100644 hw/hexagon/meson.build
diff --git a/MAINTAINERS b/MAINTAINERS
index 5376f7d8d26..3998abaecf1 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -1344,6 +1344,18 @@ F: pc-bios/hppa-firmware.img
F: roms/seabios-hppa/
F: tests/functional/hppa/
+Hexagon Machines
+----------------
+V66G_1024, V68N_1024, sa8775-cdsp0
+M: Brian Cain <brian.cain@oss.qualcomm.com>
+R: Pierrick Bouvier <pierrick.bouvier@oss.qualcomm.com>
+S: Supported
+F: hw/hexagon/
+F: include/hw/hexagon/
+F: configs/devices/hexagon-softmmu/default.mak
+F: docs/system/hexagon/
+F: docs/devel/hexagon-sys.rst
+
LoongArch Machines
------------------
Virt
diff --git a/include/hw/hexagon/hexagon.h b/include/hw/hexagon/hexagon.h
new file mode 100644
index 00000000000..1034b09c2ac
--- /dev/null
+++ b/include/hw/hexagon/hexagon.h
@@ -0,0 +1,161 @@
+/*
+ * Hexagon Baseboard System emulation.
+ *
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+#ifndef HW_HEXAGON_H
+#define HW_HEXAGON_H
+
+#include "system/memory.h"
+#include "hw/core/boards.h"
+
+struct hexagon_board_boot_info {
+ uint64_t ram_size;
+ const char *kernel_filename;
+ uint32_t kernel_elf_flags;
+};
+
+typedef enum {
+ unknown_rev = 0,
+ v66_rev = 0xa666,
+ v67_rev = 0x2667,
+ v68_rev = 0x8d68,
+ v69_rev = 0x8c69,
+ v71_rev = 0x8c71,
+ v73_rev = 0x8c73,
+ v73m_rev = 0xcc73,
+} Rev_t;
+#define HEXAGON_LATEST_REV v73
+#define HEXAGON_LATEST_REV_UPPER V73
+
+/*
+ * Config table address bases represent bits [35:16].
+ */
+#define HEXAGON_CFG_ADDR_BASE(addr) (((addr) >> 16) & 0x0fffff)
+
+#define HEXAGON_CFGSPACE_ENTRIES (128)
+
+union hexagon_config_table {
+ struct {
+ /* Base address of L2TCM space */
+ uint32_t l2tcm_base;
+ uint32_t reserved0;
+ /* Base address of subsystem space */
+ uint32_t subsystem_base;
+ /* Base address of ETM space */
+ uint32_t etm_base;
+ /* Base address of L2 configuration space */
+ uint32_t l2cfg_base;
+ uint32_t reserved1;
+ /* Base address of L1S */
+ uint32_t l1s0_base;
+ /* Base address of AXI2 */
+ uint32_t axi2_lowaddr;
+ /* Base address of streamer base */
+ uint32_t streamer_base;
+ uint32_t reserved2;
+ /* Base address of fast L2VIC */
+ uint32_t fastl2vic_base;
+ /* Number of entries in JTLB */
+ uint32_t jtlb_size_entries;
+ /* Coprocessor type */
+ uint32_t coproc_present;
+ /* Number of extension execution contexts available */
+ uint32_t ext_contexts;
+ /* Base address of Hexagon Vector Tightly Coupled Memory (VTCM) */
+ uint32_t vtcm_base;
+ /* Size of VTCM (in KB) */
+ uint32_t vtcm_size_kb;
+ /* L2 tag size */
+ uint32_t l2tag_size;
+ /* Amount of physical L2 memory in released version */
+ uint32_t l2ecomem_size;
+ /* Hardware threads available on the core */
+ uint32_t thread_enable_mask;
+ /* Base address of the ECC registers */
+ uint32_t eccreg_base;
+ /* L2 line size */
+ uint32_t l2line_size;
+ /* Small Core processor (also implies audio extension) */
+ uint32_t tiny_core;
+ /* Size of L2TCM */
+ uint32_t l2itcm_size;
+ /* Base address of L2-ITCM */
+ uint32_t l2itcm_base;
+ uint32_t reserved3;
+ /* DTM is present */
+ uint32_t dtm_present;
+ /* Version of the DMA */
+ uint32_t dma_version;
+ /* Native HVX vector length in log of bytes */
+ uint32_t hvx_vec_log_length;
+ /* Core ID of the multi-core */
+ uint32_t core_id;
+ /* Number of multi-core cores */
+ uint32_t core_count;
+ uint32_t coproc2_reg0;
+ uint32_t coproc2_reg1;
+ /* Supported HVX vector length */
+ uint32_t v2x_mode;
+ uint32_t coproc2_reg2;
+ uint32_t coproc2_reg3;
+ uint32_t coproc2_reg4;
+ uint32_t coproc2_reg5;
+ uint32_t coproc2_reg6;
+ uint32_t coproc2_reg7;
+ /* Voltage droop mitigation technique parameter */
+ uint32_t acd_preset;
+ /* Voltage droop mitigation technique parameter */
+ uint32_t mnd_preset;
+ /* L1 data cache size (in KB) */
+ uint32_t l1d_size_kb;
+ /* L1 instruction cache size in (KB) */
+ uint32_t l1i_size_kb;
+ /* L1 data cache write policy: see HexagonL1WritePolicy */
+ uint32_t l1d_write_policy;
+ /* VTCM bank width */
+ uint32_t vtcm_bank_width;
+ uint32_t reserved4;
+ uint32_t reserved5;
+ uint32_t reserved6;
+ uint32_t coproc2_cvt_mpy_size;
+ uint32_t consistency_domain;
+ uint32_t capacity_domain;
+ uint32_t axi3_lowaddr;
+ uint32_t coproc2_int8_subcolumns;
+ uint32_t corecfg_present;
+ uint32_t coproc2_fp16_acc_exp;
+ uint32_t AXIM2_secondary_base;
+ };
+ uint32_t raw[HEXAGON_CFGSPACE_ENTRIES];
+};
+
+struct hexagon_machine_config {
+ /* Base address of config table */
+ uint32_t cfgbase;
+ /* Size of L2 TCM */
+ uint32_t l2tcm_size;
+ /* Base address of L2VIC */
+ uint32_t l2vic_base;
+ /* Size of L2VIC region */
+ uint32_t l2vic_size;
+ /* QTimer csr base */
+ uint32_t csr_base;
+ uint32_t qtmr_region;
+ union hexagon_config_table cfgtable;
+};
+
+#define TYPE_HEXAGON_COMMON_MACHINE "hexagon-common-machine"
+OBJECT_DECLARE_SIMPLE_TYPE(HexagonCommonMachineState, HEXAGON_COMMON_MACHINE)
+
+struct HexagonCommonMachineState {
+ MachineState parent_obj;
+
+ MemoryRegion ram;
+ MemoryRegion cfgtable_rom;
+};
+
+#endif
diff --git a/hw/hexagon/machine_cfg_v66g_1024.h.inc b/hw/hexagon/machine_cfg_v66g_1024.h.inc
new file mode 100644
index 00000000000..cc4d89b89c9
--- /dev/null
+++ b/hw/hexagon/machine_cfg_v66g_1024.h.inc
@@ -0,0 +1,64 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+static const struct hexagon_machine_config v66g_1024 = {
+ .cfgbase = 0xd8180000,
+ .l2tcm_size = 0x00000000,
+ .l2vic_base = 0xfc910000,
+ .l2vic_size = 0x00001000,
+ .csr_base = 0xfc900000,
+ .qtmr_region = 0xfc921000,
+ .cfgtable = {
+ .l2tcm_base = 0x0000d800,
+ .reserved0 = 0x0000d400,
+ .subsystem_base = 0x0000fc90,
+ .etm_base = 0x0000d805,
+ .l2cfg_base = 0x0000d81a,
+ .reserved1 = 0x00000000,
+ .l1s0_base = 0x0000d820,
+ .axi2_lowaddr = 0x00003000,
+ .streamer_base = 0x00000000,
+ .reserved2 = 0x0000d819,
+ .fastl2vic_base = 0x0000d81e,
+ .jtlb_size_entries = 0x00000080,
+ .coproc_present = 0x00000001,
+ .ext_contexts = 0x00000004,
+ .vtcm_base = 0x0000d820,
+ .vtcm_size_kb = 0x00000100,
+ .l2tag_size = 0x00000400,
+ .l2ecomem_size = 0x00000400,
+ .thread_enable_mask = 0x0000000f,
+ .eccreg_base = 0x0000d81f,
+ .l2line_size = 0x00000080,
+ .tiny_core = 0x00000000,
+ .l2itcm_size = 0x00000000,
+ .l2itcm_base = 0x0000d820,
+ .reserved3 = 0x00000000,
+ .dtm_present = 0x00000000,
+ .dma_version = 0x00000000,
+ .hvx_vec_log_length = 0x00000080,
+ .core_id = 0x00000000,
+ .core_count = 0x00000000,
+ .coproc2_reg0 = 0x00000000,
+ .coproc2_reg1 = 0x00000000,
+ .v2x_mode = 0x00000000,
+ .coproc2_reg2 = 0x00000000,
+ .coproc2_reg3 = 0x00000000,
+ .coproc2_reg4 = 0x00000000,
+ .coproc2_reg5 = 0x00000000,
+ .coproc2_reg6 = 0x00000000,
+ .coproc2_reg7 = 0x00000000,
+ .acd_preset = 0x00000000,
+ .mnd_preset = 0x00000000,
+ .l1d_size_kb = 0x00000000,
+ .l1i_size_kb = 0x00000000,
+ .l1d_write_policy = 0x00000000,
+ .vtcm_bank_width = 0x00000000,
+ .reserved4 = 0x00000000,
+ .reserved5 = 0x00000000,
+ .reserved6 = 0x00000000,
+ .coproc2_cvt_mpy_size = 0x00000000,
+ .consistency_domain = 0x00000000,
+ .capacity_domain = 0x00000000,
+ .axi3_lowaddr = 0x00000000,
+ },
+};
diff --git a/hw/hexagon/hexagon_dsp.c b/hw/hexagon/hexagon_dsp.c
new file mode 100644
index 00000000000..ac01d359928
--- /dev/null
+++ b/hw/hexagon/hexagon_dsp.c
@@ -0,0 +1,221 @@
+/*
+ * Hexagon DSP Subsystem emulation. This represents a generic DSP
+ * subsystem with few peripherals, like the Compute DSP.
+ *
+ * Copyright (c) Qualcomm Technologies, Inc. and/or its subsidiaries.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+
+#include "qemu/osdep.h"
+#include "qemu/units.h"
+#include "system/address-spaces.h"
+#include "hw/core/boards.h"
+#include "hw/core/qdev-properties.h"
+#include "hw/hexagon/hexagon.h"
+#include "hw/hexagon/hexagon_globalreg.h"
+#include "hw/hexagon/hexagon_tlb.h"
+#include "hw/core/loader.h"
+#include "qapi/error.h"
+#include "qemu/error-report.h"
+#include "qemu/log.h"
+#include "elf.h"
+#include "cpu.h"
+#include "migration/cpu.h"
+#include "system/system.h"
+#include "target/hexagon/internal.h"
+#include "system/physmem.h"
+#include "system/reset.h"
+
+#include "machine_cfg_v66g_1024.h.inc"
+
+#define TYPE_HEXAGON_DSP_MACHINE "hexagon-dsp-machine"
+OBJECT_DECLARE_SIMPLE_TYPE(HexagonDspMachineState, HEXAGON_DSP_MACHINE)
+
+struct HexagonDspMachineState {
+ HexagonCommonMachineState parent_obj;
+
+ hwaddr isdb_secure_flag;
+ hwaddr isdb_trusted_flag;
+};
+
+static HexagonDspMachineState *current_dms;
+
+static void hex_symbol_callback(const char *st_name, int st_info,
+ uint64_t st_value, uint64_t st_size)
+{
+ if (!g_strcmp0("isdb_secure_flag", st_name)) {
+ current_dms->isdb_secure_flag = st_value;
+ }
+ if (!g_strcmp0("isdb_trusted_flag", st_name)) {
+ current_dms->isdb_trusted_flag = st_value;
+ }
+}
+
+/* Board init. */
+static struct hexagon_board_boot_info hexagon_binfo;
+
+static void hexagon_load_kernel(HexagonDspMachineState *dms, HexagonCPU *cpu)
+{
+ uint64_t pentry;
+ long kernel_size;
+
+ current_dms = dms;
+ kernel_size = load_elf_ram_sym(hexagon_binfo.kernel_filename, NULL, NULL,
+ NULL, &pentry, NULL, NULL,
+ &hexagon_binfo.kernel_elf_flags, 0, EM_HEXAGON, 0, 0,
+ &address_space_memory, false, hex_symbol_callback);
+ current_dms = NULL;
+
+ if (kernel_size <= 0) {
+ error_report("no kernel file '%s'",
+ hexagon_binfo.kernel_filename);
+ exit(1);
+ }
+
+ qdev_prop_set_uint32(DEVICE(cpu), "exec-start-addr", pentry);
+}
+
+static void hexagon_init_bootstrap(HexagonDspMachineState *dms, HexagonCPU *cpu)
+{
+ MachineState *machine = MACHINE(dms);
+
+ if (machine->kernel_filename) {
+ uint32_t mem = 1;
+
+ hexagon_load_kernel(dms, cpu);
+ if (dms->isdb_secure_flag) {
+ physical_memory_write(dms->isdb_secure_flag,
+ &mem, sizeof(mem));
+ }
+ if (dms->isdb_trusted_flag) {
+ physical_memory_write(dms->isdb_trusted_flag,
+ &mem, sizeof(mem));
+ }
+ }
+}
+
+static void do_cpu_reset(void *opaque)
+{
+ HexagonCPU *cpu = opaque;
+ CPUState *cs = CPU(cpu);
+ cpu_reset(cs);
+}
+
+static void hexagon_common_init(MachineState *machine, Rev_t rev,
+ const struct hexagon_machine_config *m_cfg)
+{
+ HexagonCommonMachineState *hms = HEXAGON_COMMON_MACHINE(machine);
+ HexagonDspMachineState *dms = HEXAGON_DSP_MACHINE(machine);
+ MemoryRegion *address_space;
+ DeviceState *glob_regs_dev;
+ DeviceState *tlb_dev;
+
+ memset(&hexagon_binfo, 0, sizeof(hexagon_binfo));
+ if (machine->kernel_filename) {
+ hexagon_binfo.ram_size = machine->ram_size;
+ hexagon_binfo.kernel_filename = machine->kernel_filename;
+ }
+
+ machine->enable_graphics = 0;
+
+ address_space = get_system_memory();
+
+ memory_region_init_rom(&hms->cfgtable_rom, NULL, "config_table.rom",
+ sizeof(m_cfg->cfgtable), &error_fatal);
+ memory_region_add_subregion(address_space, m_cfg->cfgbase,
+ &hms->cfgtable_rom);
+
+ memory_region_init_ram(&hms->ram, NULL, "ddr.ram",
+ machine->ram_size, &error_fatal);
+ memory_region_add_subregion(address_space, 0x0, &hms->ram);
+
+ glob_regs_dev = qdev_new(TYPE_HEXAGON_GLOBALREG);
+ object_property_add_child(OBJECT(machine), "global-regs",
+ OBJECT(glob_regs_dev));
+ qdev_prop_set_uint64(glob_regs_dev, "config-table-addr", m_cfg->cfgbase);
+ qdev_prop_set_uint32(glob_regs_dev, "dsp-rev", rev);
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(glob_regs_dev), &error_fatal);
+
+ tlb_dev = qdev_new(TYPE_HEXAGON_TLB);
+ object_property_add_child(OBJECT(machine), "tlb", OBJECT(tlb_dev));
+ qdev_prop_set_uint32(tlb_dev, "num-entries",
+ m_cfg->cfgtable.jtlb_size_entries);
+ sysbus_realize_and_unref(SYS_BUS_DEVICE(tlb_dev), &error_fatal);
+
+ for (int i = 0; i < machine->smp.cpus; i++) {
+ HexagonCPU *cpu = HEXAGON_CPU(object_new(machine->cpu_type));
+ qemu_register_reset(do_cpu_reset, cpu);
+
+ /*
+ * CPU #0 is the only CPU running at boot, others must be
+ * explicitly enabled via start instruction.
+ */
+ qdev_prop_set_bit(DEVICE(cpu), "start-powered-off", (i != 0));
+ if (i == 0) {
+ hexagon_init_bootstrap(dms, cpu);
+ }
+ object_property_set_link(OBJECT(cpu), "global-regs",
+ OBJECT(glob_regs_dev), &error_fatal);
+ object_property_set_link(OBJECT(cpu), "tlb",
+ OBJECT(tlb_dev), &error_fatal);
+ qdev_realize_and_unref(DEVICE(cpu), NULL, &error_fatal);
+ }
+}
+
+static void init_mc(MachineClass *mc)
+{
+ mc->block_default_type = IF_SD;
+ mc->default_ram_size = 4 * GiB;
+ mc->no_parallel = 1;
+ mc->no_floppy = 1;
+ mc->no_cdrom = 1;
+ mc->no_serial = 1;
+ mc->is_default = false;
+ mc->max_cpus = 8;
+}
+
+/* ----------------------------------------------------------------- */
+/* Core-specific configuration settings are defined below this line. */
+/* Config table values defined in machine_configs.h.inc */
+/* ----------------------------------------------------------------- */
+
+static void v66g_1024_config_init(MachineState *machine)
+{
+ hexagon_common_init(machine, v66_rev, &v66g_1024);
+}
+
+static void v66g_1024_init(ObjectClass *oc, const void *data)
+{
+ MachineClass *mc = MACHINE_CLASS(oc);
+
+ mc->desc = "Hexagon V66G_1024";
+ mc->init = v66g_1024_config_init;
+ init_mc(mc);
+ mc->is_default = true;
+ mc->default_cpu_type = TYPE_HEXAGON_CPU_V66;
+ mc->default_cpus = 4;
+}
+
+static const TypeInfo hexagon_machine_types[] = {
+ {
+ .name = TYPE_HEXAGON_COMMON_MACHINE,
+ .parent = TYPE_MACHINE,
+ .instance_size = sizeof(HexagonCommonMachineState),
+ .abstract = true,
+ },
+ {
+ .name = TYPE_HEXAGON_DSP_MACHINE,
+ .parent = TYPE_HEXAGON_COMMON_MACHINE,
+ .instance_size = sizeof(HexagonDspMachineState),
+ .abstract = true,
+ },
+ {
+ .name = MACHINE_TYPE_NAME("V66G_1024"),
+ .parent = TYPE_HEXAGON_DSP_MACHINE,
+ .class_init = v66g_1024_init,
+ },
+};
+
+DEFINE_TYPES(hexagon_machine_types)
diff --git a/system/qdev-monitor.c b/system/qdev-monitor.c
index dfc95a08c10..00fed791cce 100644
--- a/system/qdev-monitor.c
+++ b/system/qdev-monitor.c
@@ -71,7 +71,7 @@ typedef struct QDevAlias
QEMU_ARCH_SPARC | \
QEMU_ARCH_XTENSA)
#define QEMU_ARCH_VIRTIO_CCW (QEMU_ARCH_S390X)
-#define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K)
+#define QEMU_ARCH_VIRTIO_MMIO (QEMU_ARCH_M68K | QEMU_ARCH_HEXAGON)
/* Please keep this table sorted by typename. */
static const QDevAlias qdev_alias_table[] = {
diff --git a/target/hexagon/translate.c b/target/hexagon/translate.c
index e0418ee990d..77235916f4b 100644
--- a/target/hexagon/translate.c
+++ b/target/hexagon/translate.c
@@ -32,6 +32,7 @@
#include "translate.h"
#include "genptr.h"
#include "printinsn.h"
+#include "exec/target_page.h"
#define HELPER_H "helper.h"
#include "exec/helper-info.c.inc"
diff --git a/hw/Kconfig b/hw/Kconfig
index c109f5537b2..c92ca2b13a3 100644
--- a/hw/Kconfig
+++ b/hw/Kconfig
@@ -53,6 +53,7 @@ source arm/Kconfig
source cpu/Kconfig
source alpha/Kconfig
source avr/Kconfig
+source hexagon/Kconfig
source hppa/Kconfig
source i386/Kconfig
source loongarch/Kconfig
diff --git a/hw/hexagon/Kconfig b/hw/hexagon/Kconfig
new file mode 100644
index 00000000000..cdf7770a305
--- /dev/null
+++ b/hw/hexagon/Kconfig
@@ -0,0 +1,4 @@
+config HEX_DSP
+ bool
+ default y
+ depends on HEXAGON
diff --git a/hw/hexagon/meson.build b/hw/hexagon/meson.build
new file mode 100644
index 00000000000..f528d2bc4ab
--- /dev/null
+++ b/hw/hexagon/meson.build
@@ -0,0 +1,6 @@
+hexagon_ss = ss.source_set()
+hexagon_ss.add(files('hexagon_tlb.c'))
+hexagon_ss.add(files('hexagon_globalreg.c'))
+hexagon_ss.add(when: 'CONFIG_HEX_DSP', if_true: files('hexagon_dsp.c'))
+
+hw_arch += {'hexagon': hexagon_ss}
diff --git a/hw/meson.build b/hw/meson.build
index ef65ba51950..7fa81db453e 100644
--- a/hw/meson.build
+++ b/hw/meson.build
@@ -3,6 +3,7 @@ subdir('alpha')
subdir('arm')
subdir('avr')
subdir('hppa')
+subdir('hexagon')
subdir('xenpv') # i386 uses it
subdir('i386')
subdir('loongarch')
--
2.34.1
next prev parent reply other threads:[~2026-06-29 13:48 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-29 13:11 [PULL v5 00/77] hex queue Brian Cain
2026-06-29 13:11 ` [PULL v5 01/77] tests/docker: add flex and bison to emsdk-wasm64-cross Brian Cain
2026-06-29 13:11 ` [PULL v5 02/77] configs/meson: disable hexagon idef-parser for emscripten builds Brian Cain
2026-06-29 13:11 ` [PULL v5 03/77] target/hexagon: use cmd_array() instead of get_id() Brian Cain
2026-06-29 13:11 ` [PULL v5 04/77] target/hexagon/idef-parser: open input file in binary mode Brian Cain
2026-06-29 13:11 ` [PULL v5 05/77] docs: Add hexagon sysemu docs Brian Cain
2026-06-29 13:11 ` [PULL v5 06/77] docs/system: Add hexagon CPU emulation Brian Cain
2026-06-29 13:11 ` [PULL v5 07/77] target/hexagon: Fix badva reference, delete CAUSE Brian Cain
2026-06-29 13:11 ` [PULL v5 08/77] target/hexagon: Add missing A_CALL attr, hintjumpr to multi_cof Brian Cain
2026-06-29 13:11 ` [PULL v5 09/77] target/hexagon: Handle system/guest registers in gen_analyze_funcs.py and hex_common.py Brian Cain
2026-06-29 13:11 ` [PULL v5 10/77] target/hexagon: Suppress unused-variable warnings for sysemu source regs Brian Cain
2026-06-29 13:11 ` [PULL v5 11/77] target/hexagon: Switch to tag_ignore(), generate via get_{user, sys}_tags() Brian Cain
2026-06-29 13:11 ` [PULL v5 12/77] target/hexagon: Add privilege check, use tag_ignore() Brian Cain
2026-06-29 13:11 ` [PULL v5 13/77] target/hexagon: Add a placeholder fp exception Brian Cain
2026-06-29 13:11 ` [PULL v5 14/77] target/hexagon: Add guest, system reg number defs Brian Cain
2026-06-29 13:11 ` [PULL v5 15/77] target/hexagon: Add guest, system reg number state Brian Cain
2026-06-29 13:11 ` [PULL v5 16/77] target/hexagon: Add TCG values for sreg, greg Brian Cain
2026-06-29 13:11 ` [PULL v5 17/77] target/hexagon: Add guest/sys reg writes to DisasContext Brian Cain
2026-06-29 13:11 ` [PULL v5 18/77] target/hexagon: Add imported macro, attr defs for sysemu Brian Cain
2026-06-29 13:11 ` [PULL v5 19/77] target/hexagon: Add new macro definitions " Brian Cain
2026-06-29 13:11 ` [PULL v5 20/77] target/hexagon: Add handlers for guest/sysreg r/w Brian Cain
2026-06-29 13:11 ` [PULL v5 21/77] target/hexagon: Add placeholder greg/sreg r/w helpers Brian Cain
2026-06-29 13:11 ` [PULL v5 22/77] target/hexagon: Add vmstate representation Brian Cain
2026-06-29 13:11 ` [PULL v5 23/77] target/hexagon: Make A_PRIV, "J2_trap*" insts need_env() Brian Cain
2026-06-29 13:11 ` [PULL v5 24/77] target/hexagon: Define register fields for system regs Brian Cain
2026-06-29 13:11 ` [PULL v5 25/77] target/hexagon: Implement do_raise_exception() Brian Cain
2026-06-29 13:11 ` [PULL v5 26/77] target/hexagon: Add system reg insns Brian Cain
2026-06-29 13:11 ` [PULL v5 27/77] target/hexagon: Add sysemu TCG overrides Brian Cain
2026-06-29 13:11 ` [PULL v5 28/77] target/hexagon: Add implicit attributes to sysemu macros Brian Cain
2026-06-29 13:11 ` [PULL v5 29/77] target/hexagon: Add TCG overrides for int handler insts Brian Cain
2026-06-29 13:11 ` [PULL v5 30/77] target/hexagon: Add TCG overrides for thread ctl Brian Cain
2026-06-29 13:11 ` [PULL v5 31/77] target/hexagon: Add TCG overrides for rte, nmi Brian Cain
2026-06-29 13:11 ` [PULL v5 32/77] target/hexagon: Add sreg_{read,write} helpers Brian Cain
2026-06-29 13:11 ` [PULL v5 33/77] target/hexagon: Add representation to count cycles Brian Cain
2026-06-29 13:11 ` [PULL v5 34/77] target/hexagon: Add implementation of cycle counters Brian Cain
2026-06-29 13:11 ` [PULL v5 35/77] target/hexagon: Add pcycle setting functionality Brian Cain
2026-06-29 13:11 ` [PULL v5 36/77] target/hexagon: Add cpu modes, mmu indices, next_PC to state Brian Cain
2026-06-29 13:11 ` [PULL v5 37/77] hw/hexagon: Declare hexagon TLB device interface Brian Cain
2026-06-29 13:11 ` [PULL v5 38/77] target/hexagon: Update TARGET_PAGE_BITS, stubs for modify_ssr/get_exe_mode Brian Cain
2026-07-03 10:46 ` Peter Maydell
2026-06-29 13:11 ` [PULL v5 39/77] target/hexagon: Define f{S,G}ET_FIELD macros Brian Cain
2026-06-29 13:11 ` [PULL v5 40/77] target/hexagon: Add hex_interrupts support Brian Cain
2026-06-29 13:11 ` [PULL v5 41/77] target/hexagon: Implement {c,}swi helpers Brian Cain
2026-06-29 13:11 ` [PULL v5 42/77] target/hexagon: Implement iassign{r,w} helpers Brian Cain
2026-06-29 13:11 ` [PULL v5 43/77] target/hexagon: Implement start/stop helpers, soft reset Brian Cain
2026-06-29 13:11 ` [PULL v5 44/77] target/hexagon: Implement {g,s}etimask helpers Brian Cain
2026-06-29 13:12 ` [PULL v5 45/77] target/hexagon: Implement wait helper Brian Cain
2026-06-29 13:12 ` [PULL v5 46/77] target/hexagon: Implement get_exe_mode() Brian Cain
2026-06-29 13:12 ` [PULL v5 47/77] target/hexagon: Implement hex_tlb_entry_get_perm() Brian Cain
2026-06-29 13:12 ` [PULL v5 48/77] target/hexagon: Implement software interrupt Brian Cain
2026-06-29 13:12 ` [PULL v5 49/77] target/hexagon: Implement stack overflow exception Brian Cain
2026-06-29 13:12 ` [PULL v5 50/77] target/hexagon: Implement exec_interrupt, set_irq Brian Cain
2026-06-29 13:12 ` [PULL v5 51/77] target/hexagon: add simple cpu_exec_reset and pointer_wrap Brian Cain
2026-06-29 13:12 ` [PULL v5 52/77] target/hexagon: Implement hexagon_tlb_fill() Brian Cain
2026-06-29 13:12 ` [PULL v5 53/77] target/hexagon: Implement siad inst Brian Cain
2026-06-29 13:12 ` [PULL v5 54/77] target/hexagon: Implement hexagon_resume_threads() Brian Cain
2026-06-29 13:12 ` [PULL v5 55/77] target/hexagon: Implement setprio, resched Brian Cain
2026-06-29 13:12 ` [PULL v5 56/77] target/hexagon: Add sysemu_ops, cpu_get_phys_page_debug() Brian Cain
2026-06-29 13:12 ` [PULL v5 57/77] target/hexagon: extend hexagon_cpu_mmu_index() for sysemu Brian Cain
2026-06-29 13:12 ` [PULL v5 58/77] target/hexagon: Decode trap1, rte as COF Brian Cain
2026-06-29 13:12 ` [PULL v5 59/77] target/hexagon: Implement modify_ssr, resched, pending_interrupt Brian Cain
2026-06-29 13:12 ` [PULL v5 60/77] target/hexagon: Add pkt_ends_tb to translation Brian Cain
2026-06-29 13:12 ` [PULL v5 61/77] target/hexagon: Add next_PC, {s,g}reg writes Brian Cain
2026-06-29 13:12 ` [PULL v5 62/77] target/hexagon: Add implicit sysreg writes Brian Cain
2026-06-29 13:12 ` [PULL v5 63/77] target/hexagon: Define system, guest reg names Brian Cain
2026-06-29 13:12 ` [PULL v5 64/77] target/hexagon: Add k0 {un,}lock Brian Cain
2026-07-03 10:48 ` Peter Maydell
2026-06-29 13:12 ` [PULL v5 65/77] target/hexagon: Add PC to raise_exception, use fTRAP() helper Brian Cain
2026-06-29 13:12 ` [PULL v5 66/77] target/hexagon: Add TCG overrides for transfer insts Brian Cain
2026-06-29 13:12 ` [PULL v5 67/77] target/hexagon: Add support for loadw_phys Brian Cain
2026-06-29 13:12 ` [PULL v5 68/77] target/hexagon: Add guest reg reading functionality Brian Cain
2026-06-29 13:12 ` [PULL v5 69/77] hw/hexagon: Add globalreg model Brian Cain
2026-06-29 13:12 ` [PULL v5 70/77] hw/hexagon: Add global register tracing Brian Cain
2026-06-29 13:12 ` [PULL v5 71/77] hw/hexagon: Add hexagon TLB device implementation Brian Cain
2026-06-29 13:12 ` Brian Cain [this message]
2026-06-29 13:12 ` [PULL v5 73/77] hw/hexagon: Add v68, sa8775-cdsp0 defs Brian Cain
2026-06-29 13:12 ` [PULL v5 74/77] hw/hexagon: Add support for cfgbase Brian Cain
2026-06-29 13:12 ` [PULL v5 75/77] target/hexagon: add build config for softmmu Brian Cain
2026-06-29 13:12 ` [PULL v5 76/77] hw/hexagon: Define hexagon "virt" machine Brian Cain
2026-06-29 13:12 ` [PULL v5 77/77] tests/qtest: Add hexagon boot-serial-test Brian Cain
2026-06-29 18:28 ` [PULL v5 00/77] hex queue Stefan Hajnoczi
2026-06-30 4:37 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260629131232.2487780-73-brian.cain@oss.qualcomm.com \
--to=brian.cain@oss.qualcomm.com \
--cc=armbru@redhat.com \
--cc=bcain@quicinc.com \
--cc=berrange@redhat.com \
--cc=mlambert@quicinc.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=pierrick.bouvier@oss.qualcomm.com \
--cc=qemu-devel@nongnu.org \
--cc=sidneym@quicinc.com \
--cc=stefanha@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.