interrupt_controller.h (938B)
1 // SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com> 2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0) 3 4 #pragma once 5 #include "types.h" 6 7 class StateWrapper; 8 9 namespace InterruptController { 10 11 static constexpr u32 NUM_IRQS = 11; 12 13 enum class IRQ : u32 14 { 15 VBLANK = 0, // IRQ0 - VBLANK 16 GPU = 1, // IRQ1 - GPU via GP0(1Fh) 17 CDROM = 2, // IRQ2 - CDROM 18 DMA = 3, // IRQ3 - DMA 19 TMR0 = 4, // IRQ4 - TMR0 - Sysclk or Dotclk 20 TMR1 = 5, // IRQ5 - TMR1 - Sysclk Hblank 21 TMR2 = 6, // IRQ6 - TMR2 - Sysclk or Sysclk / 8 22 PAD = 7, // IRQ7 - Controller and Memory Card Byte Received 23 SIO = 8, // IRQ8 - SIO 24 SPU = 9, // IRQ9 - SPU 25 IRQ10 = 10, // IRQ10 - Lightpen interrupt, PIO 26 27 MaxCount 28 }; 29 30 void Reset(); 31 bool DoState(StateWrapper& sw); 32 33 void SetLineState(IRQ irq, bool state); 34 35 u32 ReadRegister(u32 offset); 36 void WriteRegister(u32 offset, u32 value); 37 38 } // namespace InterruptController