cpu: CPU.ARMv8A @ sysbus
    cpuType: "cortex-a78"
    genericInterruptController: gic

timer: Timers.ARM_GenericTimer @ cpu
    frequency: 62500000
    EL3PhysicalTimerIRQ -> gic#0@29
    EL1PhysicalTimerIRQ -> gic#0@30
    EL1VirtualTimerIRQ -> gic#0@27
    NonSecureEL2PhysicalTimerIRQ -> gic#0@26
    NonSecureEL2VirtualTimerIRQ -> gic#0@28

gic: IRQControllers.ARM_GenericInterruptController @ {
        sysbus new Bus.BusMultiRegistration { address: 0x8000000; size: 0x010000; region: "distributor" };
        sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu; address: 0x80a0000 }
    }
    architectureVersion: .GICv4
    supportsTwoSecurityStates: true
    // GIC -> ARM CPU interrupt connections are generated automatically

flash: Memory.MappedMemory @ sysbus 0x0
    size: 0x08000000

bl31: Memory.MappedMemory @ sysbus 0x0e000000
    size: 0x01000000

ram: Memory.MappedMemory @ sysbus 0x40000000
    size: 0x80000000

uart0: UART.PL011 @ sysbus 0x09000000
    -> gic@1

rtc: Timers.PL031 @ sysbus 0x09010000
    -> gic@2
