/* | |
* SPDX-License-Identifier: 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 |