m68k_irqc.h 850 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * SPDX-License-Identifier: GPL-2.0-or-later
  3. *
  4. * QEMU Motorola 680x0 IRQ Controller
  5. *
  6. * (c) 2020 Laurent Vivier <laurent@vivier.eu>
  7. *
  8. */
  9. #ifndef M68K_IRQC_H
  10. #define M68K_IRQC_H
  11. #include "hw/sysbus.h"
  12. #define TYPE_M68K_IRQC "m68k-irq-controller"
  13. #define M68K_IRQC(obj) OBJECT_CHECK(M68KIRQCState, (obj), \
  14. TYPE_M68K_IRQC)
  15. #define M68K_IRQC_AUTOVECTOR_BASE 25
  16. enum {
  17. M68K_IRQC_LEVEL_1 = 0,
  18. M68K_IRQC_LEVEL_2,
  19. M68K_IRQC_LEVEL_3,
  20. M68K_IRQC_LEVEL_4,
  21. M68K_IRQC_LEVEL_5,
  22. M68K_IRQC_LEVEL_6,
  23. M68K_IRQC_LEVEL_7,
  24. };
  25. #define M68K_IRQC_LEVEL_NUM (M68K_IRQC_LEVEL_7 - M68K_IRQC_LEVEL_1 + 1)
  26. typedef struct M68KIRQCState {
  27. SysBusDevice parent_obj;
  28. uint8_t ipr;
  29. ArchCPU *cpu;
  30. /* statistics */
  31. uint64_t stats_irq_count[M68K_IRQC_LEVEL_NUM];
  32. } M68KIRQCState;
  33. #endif