1dram: Memory.MappedMemory @ sysbus 0x0
2    size: 0x80000000
3
4uart: UART.NS16550 @ sysbus 0xa0000000
5
6cpu0: CPU.X86_64 @ sysbus
7    cpuType: "x86_64"
8    lapic: lapic0
9
10cpu1: CPU.X86_64 @ sysbus
11    cpuType: "x86_64"
12    lapic: lapic1
13
14lapic0: IRQControllers.LAPIC @ sysbus new Bus.BusPointRegistration { address: 0xFEE00000; cpu: cpu0 }
15    id: 0x0
16    IRQ -> cpu0@0
17
18lapic1: IRQControllers.LAPIC @ sysbus new Bus.BusPointRegistration { address: 0xFEE00000; cpu: cpu1 }
19    id: 0x1
20    IRQ -> cpu1@0
21
22hpet: Timers.HPET @ sysbus 0xFED00000
23
24pci: Python.PythonPeripheral @ sysbus 0xE0000CF8
25    size: 0x400
26    initable: false
27    script: '''
28if request.isRead:
29    if addr == 0x0:
30        # ns16550 vendor and device ID
31        request.value = 0x5abc8086
32    elif addr == 0x10:
33        # address to memory-mapped accesses, it should be the same as 'uart' point of registration
34        request.value = 0xa0000000
35else:
36    addr = request.value & 0xFF
37'''
38
39sysbus:
40    init:
41        Tag <0xE0000020 1> "PIC1_CMD"
42        Tag <0xE0000021 1> "PIC1_DATA"
43        Tag <0xE00000A0 1> "PIC2_CMD"
44        Tag <0xE00000A1 1> "PIC2_DATA"
45        Tag <0xE0000040 1> "PIT_CHANNEL0"
46        Tag <0xE0000041 1> "PIT_CHANNEL1"
47        Tag <0xE0000042 1> "PIT_CHANNEL2"
48        Tag <0xE0000043 1> "PIT_CMDREG"
49        Tag <0xE0000CF8 4> "PCI_ADDRESS"
50        Tag <0xE0000CFC 4> "PCI_DATA"
51        Tag <0xE0000070 1> "CMOS_ADDRESS"
52        Tag <0xE0000071 1> "CMOS_DATA"
53