target-arm queue:
* New board type max78000fthr * Enable use of CXL on Arm 'virt' board * Some more tidyup of ID register handling * Refactor AT insns and PMU regs into separate source files * Don't enforce NSE,NS check for EL3->EL3 returns * hw/arm/fsl-imx8mp: Wire VIRQ and VFIQ * Allow nested-virtualization with KVM on the 'virt' board * system/qdev: Remove pointless NULL check in qdev_device_add_from_qdict * hw/arm/virt-acpi-build: Don't create ITS id mappings by default * target/arm: Remove unused helper_sme2_luti4_4b -----BEGIN PGP SIGNATURE----- iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmhxEcoZHHBldGVyLm1h eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3j5yEACWYnNeqo8Yph6/EJExE6eV r0tC6FBb5ShPgA6kDxhpOc1lI6uXGh8+D7bL9BePEdz/brCf1QDfs2Z4q/hb5ysX D0H6VI5Gr1j6MjkFRBo3+vvYz4Yh++XLn5Q9lZv8zaSEdraq/ay2kxnuhRCK+4Ar +QoGtKrGMJ7UCpfiRlvNnd1UjgORZf10EE/bRImX13sxeDomP3CZhFzAyJyShOP9 JA7bAd4rYJ4oj8R33y8Yaxjwm4FOndj740B0zwpO8mpjzFiE5zbqsaO+mEgYSflc OQisCu/KRFpyIR+UqP+4gNaJLfKQW5Y4r61zEaiJWV/c4RdKNnbK1f7MX11fNhOk k1paF3GIXp6f794Hb14vtsYnKHF2eeNSmRkAomXxLgUSYzLezL+yj7cdYmRJhgYU thc1PSiEmHYhjRmOaMC9+dkMtvIexWyDNYNFTygoOE5/kTMSazeTFQpFmw+ZuTee 9pjKsYRZJgTa64IkJy1L34jc2gds48Q20KpQsqZ22KQcjwt4PW4eQXkvMylawSut mArHVH6AAxIK+defeEmnQCJ0OccyGCENjRDuWyWMMGoP/ggZpO47rGWmCUOK8xz8 IfGdPeF/9xsKSKWvjpiHyyKa48wuO2bVC+5bISS6IPA2uGneS2DpmjkHU+gHBqpk GNlvEnXZfavZOHejE7/L/Q== =hJ4/ -----END PGP SIGNATURE----- Merge tag 'pull-target-arm-20250711' of https://gitlab.com/pm215/qemu into staging target-arm queue: * New board type max78000fthr * Enable use of CXL on Arm 'virt' board * Some more tidyup of ID register handling * Refactor AT insns and PMU regs into separate source files * Don't enforce NSE,NS check for EL3->EL3 returns * hw/arm/fsl-imx8mp: Wire VIRQ and VFIQ * Allow nested-virtualization with KVM on the 'virt' board * system/qdev: Remove pointless NULL check in qdev_device_add_from_qdict * hw/arm/virt-acpi-build: Don't create ITS id mappings by default * target/arm: Remove unused helper_sme2_luti4_4b # -----BEGIN PGP SIGNATURE----- # # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmhxEcoZHHBldGVyLm1h # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3j5yEACWYnNeqo8Yph6/EJExE6eV # r0tC6FBb5ShPgA6kDxhpOc1lI6uXGh8+D7bL9BePEdz/brCf1QDfs2Z4q/hb5ysX # D0H6VI5Gr1j6MjkFRBo3+vvYz4Yh++XLn5Q9lZv8zaSEdraq/ay2kxnuhRCK+4Ar # +QoGtKrGMJ7UCpfiRlvNnd1UjgORZf10EE/bRImX13sxeDomP3CZhFzAyJyShOP9 # JA7bAd4rYJ4oj8R33y8Yaxjwm4FOndj740B0zwpO8mpjzFiE5zbqsaO+mEgYSflc # OQisCu/KRFpyIR+UqP+4gNaJLfKQW5Y4r61zEaiJWV/c4RdKNnbK1f7MX11fNhOk # k1paF3GIXp6f794Hb14vtsYnKHF2eeNSmRkAomXxLgUSYzLezL+yj7cdYmRJhgYU # thc1PSiEmHYhjRmOaMC9+dkMtvIexWyDNYNFTygoOE5/kTMSazeTFQpFmw+ZuTee # 9pjKsYRZJgTa64IkJy1L34jc2gds48Q20KpQsqZ22KQcjwt4PW4eQXkvMylawSut # mArHVH6AAxIK+defeEmnQCJ0OccyGCENjRDuWyWMMGoP/ggZpO47rGWmCUOK8xz8 # IfGdPeF/9xsKSKWvjpiHyyKa48wuO2bVC+5bISS6IPA2uGneS2DpmjkHU+gHBqpk # GNlvEnXZfavZOHejE7/L/Q== # =hJ4/ # -----END PGP SIGNATURE----- # gpg: Signature made Fri 11 Jul 2025 09:29:46 EDT # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [full] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [full] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [full] # gpg: aka "Peter Maydell <peter@archaic.org.uk>" [unknown] # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * tag 'pull-target-arm-20250711' of https://gitlab.com/pm215/qemu: (36 commits) tests/functional: Add a test for the MAX78000 arm machine docs/system: arm: Add max78000 board description target/arm: Remove helper_sme2_luti4_4b hw/arm/virt-acpi-build: Don't create ITS id mappings by default system/qdev: Remove pointless NULL check in qdev_device_add_from_qdict hw/arm/virt: Allow virt extensions with KVM hw/arm/arm_gicv3_kvm: Add a migration blocker with kvm nested virt target/arm: Enable feature ARM_FEATURE_EL2 if EL2 is supported target/arm/kvm: Add helper to detect EL2 when using KVM hw/arm: Allow setting KVM vGIC maintenance IRQ hw/arm/fsl-imx8mp: Wire VIRQ and VFIQ target/arm: Don't enforce NSE,NS check for EL3->EL3 returns target/arm: Split out performance monitor regs to cpregs-pmu.c target/arm: Split out AT insns to tcg/cpregs-at.c target/arm: Drop stub for define_tlb_insn_regs arm/kvm: shorten one overly long line arm/cpu: store clidr into the idregs array arm/cpu: fix trailing ',' for SET_IDREG arm/cpu: store id_aa64afr{0,1} into the idregs array arm/cpu: store id_afr0 into the idregs array ... Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
0edc2afe0c
62 changed files with 4300 additions and 2010 deletions
50
include/hw/arm/max78000_soc.h
Normal file
50
include/hw/arm/max78000_soc.h
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
/*
|
||||
* MAX78000 SOC
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef HW_ARM_MAX78000_SOC_H
|
||||
#define HW_ARM_MAX78000_SOC_H
|
||||
|
||||
#include "hw/or-irq.h"
|
||||
#include "hw/arm/armv7m.h"
|
||||
#include "hw/misc/max78000_aes.h"
|
||||
#include "hw/misc/max78000_gcr.h"
|
||||
#include "hw/misc/max78000_icc.h"
|
||||
#include "hw/char/max78000_uart.h"
|
||||
#include "hw/misc/max78000_trng.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MAX78000_SOC "max78000-soc"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(MAX78000State, MAX78000_SOC)
|
||||
|
||||
#define FLASH_BASE_ADDRESS 0x10000000
|
||||
#define FLASH_SIZE (512 * 1024)
|
||||
#define SRAM_BASE_ADDRESS 0x20000000
|
||||
#define SRAM_SIZE (128 * 1024)
|
||||
|
||||
/* The MAX78k has 2 instruction caches; only icc0 matters, icc1 is for RISC */
|
||||
#define MAX78000_NUM_ICC 2
|
||||
#define MAX78000_NUM_UART 3
|
||||
|
||||
struct MAX78000State {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
ARMv7MState armv7m;
|
||||
|
||||
MemoryRegion sram;
|
||||
MemoryRegion flash;
|
||||
|
||||
Max78000GcrState gcr;
|
||||
Max78000IccState icc[MAX78000_NUM_ICC];
|
||||
Max78000UartState uart[MAX78000_NUM_UART];
|
||||
Max78000TrngState trng;
|
||||
Max78000AesState aes;
|
||||
|
||||
Clock *sysclk;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -36,6 +36,7 @@
|
|||
#include "hw/arm/boot.h"
|
||||
#include "hw/arm/bsa.h"
|
||||
#include "hw/block/flash.h"
|
||||
#include "hw/cxl/cxl.h"
|
||||
#include "system/kvm.h"
|
||||
#include "hw/intc/arm_gicv3_common.h"
|
||||
#include "qom/object.h"
|
||||
|
|
@ -85,6 +86,7 @@ enum {
|
|||
/* indices of IO regions located after the RAM */
|
||||
enum {
|
||||
VIRT_HIGH_GIC_REDIST2 = VIRT_LOWMEMMAP_LAST,
|
||||
VIRT_CXL_HOST,
|
||||
VIRT_HIGH_PCIE_ECAM,
|
||||
VIRT_HIGH_PCIE_MMIO,
|
||||
};
|
||||
|
|
@ -140,6 +142,7 @@ struct VirtMachineState {
|
|||
bool secure;
|
||||
bool highmem;
|
||||
bool highmem_compact;
|
||||
bool highmem_cxl;
|
||||
bool highmem_ecam;
|
||||
bool highmem_mmio;
|
||||
bool highmem_redists;
|
||||
|
|
@ -174,6 +177,7 @@ struct VirtMachineState {
|
|||
char *oem_id;
|
||||
char *oem_table_id;
|
||||
bool ns_el2_virt_timer_irq;
|
||||
CXLState cxl_devices_state;
|
||||
};
|
||||
|
||||
#define VIRT_ECAM_ID(high) (high ? VIRT_HIGH_PCIE_ECAM : VIRT_PCIE_ECAM)
|
||||
|
|
|
|||
78
include/hw/char/max78000_uart.h
Normal file
78
include/hw/char/max78000_uart.h
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
/*
|
||||
* MAX78000 UART
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef HW_MAX78000_UART_H
|
||||
#define HW_MAX78000_UART_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "chardev/char-fe.h"
|
||||
#include "qemu/fifo8.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define UART_CTRL 0x0
|
||||
#define UART_STATUS 0x4
|
||||
#define UART_INT_EN 0x8
|
||||
#define UART_INT_FL 0xc
|
||||
#define UART_CLKDIV 0x10
|
||||
#define UART_OSR 0x14
|
||||
#define UART_TXPEEK 0x18
|
||||
#define UART_PNR 0x1c
|
||||
#define UART_FIFO 0x20
|
||||
#define UART_DMA 0x30
|
||||
#define UART_WKEN 0x34
|
||||
#define UART_WKFL 0x38
|
||||
|
||||
/* CTRL */
|
||||
#define UART_CTF_DIS (1 << 7)
|
||||
#define UART_FLUSH_TX (1 << 8)
|
||||
#define UART_FLUSH_RX (1 << 9)
|
||||
#define UART_BCLKEN (1 << 15)
|
||||
#define UART_BCLKRDY (1 << 19)
|
||||
|
||||
/* STATUS */
|
||||
#define UART_RX_LVL 8
|
||||
#define UART_TX_EM (1 << 6)
|
||||
#define UART_RX_FULL (1 << 5)
|
||||
#define UART_RX_EM (1 << 4)
|
||||
|
||||
/* PNR (Pin Control Register) */
|
||||
#define UART_CTS 1
|
||||
#define UART_RTS (1 << 1)
|
||||
|
||||
/* INT_EN / INT_FL */
|
||||
#define UART_RX_THD (1 << 4)
|
||||
#define UART_TX_HE (1 << 6)
|
||||
|
||||
#define UART_RXBUFLEN 0x100
|
||||
#define TYPE_MAX78000_UART "max78000-uart"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(Max78000UartState, MAX78000_UART)
|
||||
|
||||
struct Max78000UartState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
|
||||
uint32_t ctrl;
|
||||
uint32_t status;
|
||||
uint32_t int_en;
|
||||
uint32_t int_fl;
|
||||
uint32_t clkdiv;
|
||||
uint32_t osr;
|
||||
uint32_t txpeek;
|
||||
uint32_t pnr;
|
||||
uint32_t fifo;
|
||||
uint32_t dma;
|
||||
uint32_t wken;
|
||||
uint32_t wkfl;
|
||||
|
||||
Fifo8 rx_fifo;
|
||||
|
||||
CharBackend chr;
|
||||
qemu_irq irq;
|
||||
};
|
||||
#endif /* HW_STM32F2XX_USART_H */
|
||||
|
|
@ -27,6 +27,8 @@
|
|||
typedef struct PXBCXLDev PXBCXLDev;
|
||||
|
||||
typedef struct CXLFixedWindow {
|
||||
SysBusDevice parent_obj;
|
||||
int index;
|
||||
uint64_t size;
|
||||
char **targets;
|
||||
PXBCXLDev *target_hbs[16];
|
||||
|
|
@ -37,12 +39,13 @@ typedef struct CXLFixedWindow {
|
|||
MemoryRegion mr;
|
||||
hwaddr base;
|
||||
} CXLFixedWindow;
|
||||
#define TYPE_CXL_FMW "cxl-fmw"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(CXLFixedWindow, CXL_FMW)
|
||||
|
||||
typedef struct CXLState {
|
||||
bool is_enabled;
|
||||
MemoryRegion host_mr;
|
||||
unsigned int next_mr_idx;
|
||||
GList *fixed_windows;
|
||||
CXLFixedMemoryWindowOptionsList *cfmw_list;
|
||||
} CXLState;
|
||||
|
||||
|
|
|
|||
|
|
@ -14,8 +14,11 @@
|
|||
#define CXL_HOST_H
|
||||
|
||||
void cxl_machine_init(Object *obj, CXLState *state);
|
||||
void cxl_fmws_link_targets(CXLState *stat, Error **errp);
|
||||
void cxl_fmws_link_targets(Error **errp);
|
||||
void cxl_hook_up_pxb_registers(PCIBus *bus, CXLState *state, Error **errp);
|
||||
hwaddr cxl_fmws_set_memmap(hwaddr base, hwaddr max_addr);
|
||||
void cxl_fmws_update_mmio(void);
|
||||
GSList *cxl_fmws_get_all_sorted(void);
|
||||
|
||||
extern const MemoryRegionOps cfmws_ops;
|
||||
|
||||
|
|
|
|||
|
|
@ -231,6 +231,7 @@ struct GICv3State {
|
|||
uint32_t num_cpu;
|
||||
uint32_t num_irq;
|
||||
uint32_t revision;
|
||||
uint32_t maint_irq;
|
||||
bool lpi_enable;
|
||||
bool nmi_support;
|
||||
bool security_extn;
|
||||
|
|
|
|||
68
include/hw/misc/max78000_aes.h
Normal file
68
include/hw/misc/max78000_aes.h
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
/*
|
||||
* MAX78000 AES
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#ifndef HW_MAX78000_AES_H
|
||||
#define HW_MAX78000_AES_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "crypto/aes.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MAX78000_AES "max78000-aes"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(Max78000AesState, MAX78000_AES)
|
||||
|
||||
#define CTRL 0
|
||||
#define STATUS 4
|
||||
#define INTFL 8
|
||||
#define INTEN 0xc
|
||||
#define FIFO 0x10
|
||||
|
||||
#define KEY_BASE 0x400
|
||||
#define KEY_END 0x420
|
||||
|
||||
/* CTRL */
|
||||
#define TYPE (1 << 9 | 1 << 8)
|
||||
#define KEY_SIZE (1 << 7 | 1 << 6)
|
||||
#define OUTPUT_FLUSH (1 << 5)
|
||||
#define INPUT_FLUSH (1 << 4)
|
||||
#define START (1 << 3)
|
||||
|
||||
#define AES_EN (1 << 0)
|
||||
|
||||
/* STATUS */
|
||||
#define OUTPUT_FULL (1 << 4)
|
||||
#define OUTPUT_EMPTY (1 << 3)
|
||||
#define INPUT_FULL (1 << 2)
|
||||
#define INPUT_EMPTY (1 << 1)
|
||||
#define BUSY (1 << 0)
|
||||
|
||||
/* INTFL*/
|
||||
#define DONE (1 << 0)
|
||||
|
||||
struct Max78000AesState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
|
||||
uint32_t ctrl;
|
||||
uint32_t status;
|
||||
uint32_t intfl;
|
||||
uint32_t inten;
|
||||
uint32_t data_index;
|
||||
uint8_t data[16];
|
||||
|
||||
uint8_t key[32];
|
||||
AES_KEY internal_key;
|
||||
|
||||
uint32_t result_index;
|
||||
uint8_t result[16];
|
||||
|
||||
|
||||
qemu_irq irq;
|
||||
};
|
||||
|
||||
#endif
|
||||
131
include/hw/misc/max78000_gcr.h
Normal file
131
include/hw/misc/max78000_gcr.h
Normal file
|
|
@ -0,0 +1,131 @@
|
|||
/*
|
||||
* MAX78000 Global Control Register
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#ifndef HW_MAX78000_GCR_H
|
||||
#define HW_MAX78000_GCR_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MAX78000_GCR "max78000-gcr"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(Max78000GcrState, MAX78000_GCR)
|
||||
|
||||
#define SYSCTRL 0x0
|
||||
#define RST0 0x4
|
||||
#define CLKCTRL 0x8
|
||||
#define PM 0xc
|
||||
#define PCLKDIV 0x18
|
||||
#define PCLKDIS0 0x24
|
||||
#define MEMCTRL 0x28
|
||||
#define MEMZ 0x2c
|
||||
#define SYSST 0x40
|
||||
#define RST1 0x44
|
||||
#define PCKDIS1 0x48
|
||||
#define EVENTEN 0x4c
|
||||
#define REVISION 0x50
|
||||
#define SYSIE 0x54
|
||||
#define ECCERR 0x64
|
||||
#define ECCED 0x68
|
||||
#define ECCIE 0x6c
|
||||
#define ECCADDR 0x70
|
||||
|
||||
/* RST0 */
|
||||
#define SYSTEM_RESET (1 << 31)
|
||||
#define PERIPHERAL_RESET (1 << 30)
|
||||
#define SOFT_RESET (1 << 29)
|
||||
#define UART2_RESET (1 << 28)
|
||||
|
||||
#define ADC_RESET (1 << 26)
|
||||
#define CNN_RESET (1 << 25)
|
||||
#define TRNG_RESET (1 << 24)
|
||||
|
||||
#define RTC_RESET (1 << 17)
|
||||
#define I2C0_RESET (1 << 16)
|
||||
|
||||
#define SPI1_RESET (1 << 13)
|
||||
#define UART1_RESET (1 << 12)
|
||||
#define UART0_RESET (1 << 11)
|
||||
|
||||
#define TMR3_RESET (1 << 8)
|
||||
#define TMR2_RESET (1 << 7)
|
||||
#define TMR1_RESET (1 << 6)
|
||||
#define TMR0_RESET (1 << 5)
|
||||
|
||||
#define GPIO1_RESET (1 << 3)
|
||||
#define GPIO0_RESET (1 << 2)
|
||||
#define WDT0_RESET (1 << 1)
|
||||
#define DMA_RESET (1 << 0)
|
||||
|
||||
/* CLKCTRL */
|
||||
#define SYSCLK_RDY (1 << 13)
|
||||
|
||||
/* MEMZ */
|
||||
#define ram0 (1 << 0)
|
||||
#define ram1 (1 << 1)
|
||||
#define ram2 (1 << 2)
|
||||
#define ram3 (1 << 3)
|
||||
|
||||
/* RST1 */
|
||||
#define CPU1_RESET (1 << 31)
|
||||
|
||||
#define SIMO_RESET (1 << 25)
|
||||
#define DVS_RESET (1 << 24)
|
||||
|
||||
#define I2C2_RESET (1 << 20)
|
||||
#define I2S_RESET (1 << 19)
|
||||
|
||||
#define SMPHR_RESET (1 << 16)
|
||||
|
||||
#define SPI0_RESET (1 << 11)
|
||||
#define AES_RESET (1 << 10)
|
||||
#define CRC_RESET (1 << 9)
|
||||
|
||||
#define PT_RESET (1 << 1)
|
||||
#define I2C1_RESET (1 << 0)
|
||||
|
||||
|
||||
#define SYSRAM0_START 0x20000000
|
||||
#define SYSRAM1_START 0x20008000
|
||||
#define SYSRAM2_START 0x20010000
|
||||
#define SYSRAM3_START 0x2001C000
|
||||
|
||||
struct Max78000GcrState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
|
||||
uint32_t sysctrl;
|
||||
uint32_t rst0;
|
||||
uint32_t clkctrl;
|
||||
uint32_t pm;
|
||||
uint32_t pclkdiv;
|
||||
uint32_t pclkdis0;
|
||||
uint32_t memctrl;
|
||||
uint32_t memz;
|
||||
uint32_t sysst;
|
||||
uint32_t rst1;
|
||||
uint32_t pckdis1;
|
||||
uint32_t eventen;
|
||||
uint32_t revision;
|
||||
uint32_t sysie;
|
||||
uint32_t eccerr;
|
||||
uint32_t ecced;
|
||||
uint32_t eccie;
|
||||
uint32_t eccaddr;
|
||||
|
||||
MemoryRegion *sram;
|
||||
AddressSpace sram_as;
|
||||
|
||||
DeviceState *uart0;
|
||||
DeviceState *uart1;
|
||||
DeviceState *uart2;
|
||||
DeviceState *trng;
|
||||
DeviceState *aes;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
33
include/hw/misc/max78000_icc.h
Normal file
33
include/hw/misc/max78000_icc.h
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
/*
|
||||
* MAX78000 Instruction Cache
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
|
||||
#ifndef HW_MAX78000_ICC_H
|
||||
#define HW_MAX78000_ICC_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MAX78000_ICC "max78000-icc"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(Max78000IccState, MAX78000_ICC)
|
||||
|
||||
#define ICC_INFO 0x0
|
||||
#define ICC_SZ 0x4
|
||||
#define ICC_CTRL 0x100
|
||||
#define ICC_INVALIDATE 0x700
|
||||
|
||||
struct Max78000IccState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
|
||||
uint32_t info;
|
||||
uint32_t sz;
|
||||
uint32_t ctrl;
|
||||
};
|
||||
|
||||
#endif
|
||||
35
include/hw/misc/max78000_trng.h
Normal file
35
include/hw/misc/max78000_trng.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
/*
|
||||
* MAX78000 True Random Number Generator
|
||||
*
|
||||
* Copyright (c) 2025 Jackson Donaldson <jcksn@duck.com>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-2.0-or-later
|
||||
*/
|
||||
#ifndef HW_MAX78000_TRNG_H
|
||||
#define HW_MAX78000_TRNG_H
|
||||
|
||||
#include "hw/sysbus.h"
|
||||
#include "qom/object.h"
|
||||
|
||||
#define TYPE_MAX78000_TRNG "max78000-trng"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(Max78000TrngState, MAX78000_TRNG)
|
||||
|
||||
#define CTRL 0
|
||||
#define STATUS 4
|
||||
#define DATA 8
|
||||
|
||||
#define RND_IE (1 << 1)
|
||||
|
||||
struct Max78000TrngState {
|
||||
SysBusDevice parent_obj;
|
||||
|
||||
MemoryRegion mmio;
|
||||
|
||||
uint32_t ctrl;
|
||||
uint32_t status;
|
||||
uint32_t data;
|
||||
|
||||
qemu_irq irq;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue