/* * SPDX-License-Identifier: GPL-2.0-or-later * * QEMU Motorola 680x0 IRQ Controller * * (c) 2020 Laurent Vivier * */ #ifndef M68K_IRQC_H #define M68K_IRQC_H #include "hw/sysbus.h" #define TYPE_M68K_IRQC "m68k-irq-controller" #define M68K_IRQC(obj) OBJECT_CHECK(M68KIRQCState, (obj), \ TYPE_M68K_IRQC) #define M68K_IRQC_AUTOVECTOR_BASE 25 enum { M68K_IRQC_LEVEL_1 = 0, M68K_IRQC_LEVEL_2, M68K_IRQC_LEVEL_3, M68K_IRQC_LEVEL_4, M68K_IRQC_LEVEL_5, M68K_IRQC_LEVEL_6, M68K_IRQC_LEVEL_7, }; #define M68K_IRQC_LEVEL_NUM (M68K_IRQC_LEVEL_7 - M68K_IRQC_LEVEL_1 + 1) typedef struct M68KIRQCState { SysBusDevice parent_obj; uint8_t ipr; ArchCPU *cpu; /* statistics */ uint64_t stats_irq_count[M68K_IRQC_LEVEL_NUM]; } M68KIRQCState; #endif