1using "./cortex-a53-gicv3.repl"
2
3cpu1: CPU.ARMv8A @ sysbus
4    cpuType: "cortex-a53"
5    genericInterruptController: gic
6    cpuId: 1
7    init:
8        IsHalted true
9
10cpu2: CPU.ARMv8A @ sysbus
11    cpuType: "cortex-a53"
12    genericInterruptController: gic
13    cpuId: 2
14    init:
15        IsHalted true
16
17cpu3: CPU.ARMv8A @ sysbus
18    cpuType: "cortex-a53"
19    genericInterruptController: gic
20    cpuId: 3
21    init:
22        IsHalted true
23
24timer1: Timers.ARM_GenericTimer @ cpu1
25    frequency: 62500000
26    EL3PhysicalTimerIRQ -> gic#1@29
27    EL1PhysicalTimerIRQ -> gic#1@30
28    EL1VirtualTimerIRQ -> gic#1@27
29    NonSecureEL2PhysicalTimerIRQ -> gic#1@26
30    NonSecureEL2VirtualTimerIRQ -> gic#1@28
31
32timer2: Timers.ARM_GenericTimer @ cpu2
33    frequency: 62500000
34    EL3PhysicalTimerIRQ -> gic#2@29
35    EL1PhysicalTimerIRQ -> gic#2@30
36    EL1VirtualTimerIRQ -> gic#2@27
37    NonSecureEL2PhysicalTimerIRQ -> gic#2@26
38    NonSecureEL2VirtualTimerIRQ -> gic#2@28
39
40timer3: Timers.ARM_GenericTimer @ cpu3
41    frequency: 62500000
42    EL3PhysicalTimerIRQ -> gic#3@29
43    EL1PhysicalTimerIRQ -> gic#3@30
44    EL1VirtualTimerIRQ -> gic#3@27
45    NonSecureEL2PhysicalTimerIRQ -> gic#3@26
46    NonSecureEL2VirtualTimerIRQ -> gic#3@28
47
48gic: @ {
49        sysbus new Bus.BusMultiRegistration { address: 0x8000000; size: 0x010000; region: "distributor" };
50        sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu; address: 0x80a0000 };
51        sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu1; address: 0x80c0000 };
52        sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu2; address: 0x80e0000 };
53        sysbus new IRQControllers.ArmGicRedistributorRegistration { attachedCPU: cpu3; address: 0x8100000 }
54    }
55    [4-7]   -> cpu1@[0-3]
56    [8-11]  -> cpu2@[0-3]
57    [12-15] -> cpu3@[0-3]
58