qemu/include/hw/intc/m68k_irqc.h
Laurent Vivier 2fde99ee31 m68k: add an interrupt controller
A (generic) copy of the GLUE device we already have for q800 to use with
the m68k-virt machine.
The q800 one would disappear in the future as q800 uses actually the djMEMC
controller.

Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20210312214145.2936082-4-laurent@vivier.eu>
2021-03-15 21:02:20 +01:00

42 lines
831 B
C

/*
* SPDX-License-Identifer: GPL-2.0-or-later
*
* QEMU Motorola 680x0 IRQ Controller
*
* (c) 2020 Laurent Vivier <laurent@vivier.eu>
*
*/
#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;
/* statistics */
uint64_t stats_irq_count[M68K_IRQC_LEVEL_NUM];
} M68KIRQCState;
#endif