fs.py revision 2566
17322Sgblack@eecs.umich.edufrom m5 import *
27322Sgblack@eecs.umich.eduimport os
37322Sgblack@eecs.umich.edufrom SysPaths import *
47322Sgblack@eecs.umich.edu
57322Sgblack@eecs.umich.edu# Base for tests is directory containing this file.
67322Sgblack@eecs.umich.edutest_base = os.path.dirname(__file__)
77322Sgblack@eecs.umich.edu
87322Sgblack@eecs.umich.edulinux_image = env.get('LINUX_IMAGE', disk('linux-latest.img'))
97322Sgblack@eecs.umich.edu
107322Sgblack@eecs.umich.educlass IdeControllerPciData(PciConfigData):
117322Sgblack@eecs.umich.edu    VendorID = 0x8086
127322Sgblack@eecs.umich.edu    DeviceID = 0x7111
137322Sgblack@eecs.umich.edu    Command = 0x0
147322Sgblack@eecs.umich.edu    Status = 0x280
157322Sgblack@eecs.umich.edu    Revision = 0x0
167322Sgblack@eecs.umich.edu    ClassCode = 0x01
177322Sgblack@eecs.umich.edu    SubClassCode = 0x01
187322Sgblack@eecs.umich.edu    ProgIF = 0x85
197322Sgblack@eecs.umich.edu    BAR0 = 0x00000001
207322Sgblack@eecs.umich.edu    BAR1 = 0x00000001
217322Sgblack@eecs.umich.edu    BAR2 = 0x00000001
227322Sgblack@eecs.umich.edu    BAR3 = 0x00000001
237322Sgblack@eecs.umich.edu    BAR4 = 0x00000001
247322Sgblack@eecs.umich.edu    BAR5 = 0x00000001
257322Sgblack@eecs.umich.edu    InterruptLine = 0x1f
267322Sgblack@eecs.umich.edu    InterruptPin = 0x01
277322Sgblack@eecs.umich.edu    BAR0Size = '8B'
287322Sgblack@eecs.umich.edu    BAR1Size = '4B'
297322Sgblack@eecs.umich.edu    BAR2Size = '8B'
307322Sgblack@eecs.umich.edu    BAR3Size = '4B'
317322Sgblack@eecs.umich.edu    BAR4Size = '16B'
327322Sgblack@eecs.umich.edu
337322Sgblack@eecs.umich.educlass SinicPciData(PciConfigData):
347322Sgblack@eecs.umich.edu    VendorID = 0x1291
357322Sgblack@eecs.umich.edu    DeviceID = 0x1293
367322Sgblack@eecs.umich.edu    Status = 0x0290
377322Sgblack@eecs.umich.edu    SubClassCode = 0x00
387322Sgblack@eecs.umich.edu    ClassCode = 0x02
397322Sgblack@eecs.umich.edu    ProgIF = 0x00
407376Sgblack@eecs.umich.edu    BAR0 = 0x00000000
417376Sgblack@eecs.umich.edu    BAR1 = 0x00000000
427376Sgblack@eecs.umich.edu    BAR2 = 0x00000000
437376Sgblack@eecs.umich.edu    BAR3 = 0x00000000
447376Sgblack@eecs.umich.edu    BAR4 = 0x00000000
457376Sgblack@eecs.umich.edu    BAR5 = 0x00000000
467376Sgblack@eecs.umich.edu    MaximumLatency = 0x34
477376Sgblack@eecs.umich.edu    MinimumGrant = 0xb0
487376Sgblack@eecs.umich.edu    InterruptLine = 0x1e
497376Sgblack@eecs.umich.edu    InterruptPin = 0x01
507376Sgblack@eecs.umich.edu    BAR0Size = '64kB'
517376Sgblack@eecs.umich.edu
527376Sgblack@eecs.umich.educlass NSGigEPciData(PciConfigData):
537376Sgblack@eecs.umich.edu    VendorID = 0x100B
547376Sgblack@eecs.umich.edu    DeviceID = 0x0022
557376Sgblack@eecs.umich.edu    Status = 0x0290
567376Sgblack@eecs.umich.edu    SubClassCode = 0x00
577376Sgblack@eecs.umich.edu    ClassCode = 0x02
587376Sgblack@eecs.umich.edu    ProgIF = 0x00
597376Sgblack@eecs.umich.edu    BAR0 = 0x00000001
607376Sgblack@eecs.umich.edu    BAR1 = 0x00000000
617376Sgblack@eecs.umich.edu    BAR2 = 0x00000000
627376Sgblack@eecs.umich.edu    BAR3 = 0x00000000
637376Sgblack@eecs.umich.edu    BAR4 = 0x00000000
647376Sgblack@eecs.umich.edu    BAR5 = 0x00000000
657376Sgblack@eecs.umich.edu    MaximumLatency = 0x34
667376Sgblack@eecs.umich.edu    MinimumGrant = 0xb0
677376Sgblack@eecs.umich.edu    InterruptLine = 0x1e
687376Sgblack@eecs.umich.edu    InterruptPin = 0x01
697376Sgblack@eecs.umich.edu    BAR0Size = '256B'
707376Sgblack@eecs.umich.edu    BAR1Size = '4kB'
717376Sgblack@eecs.umich.edu
727376Sgblack@eecs.umich.educlass LinuxRootDisk(IdeDisk):
737376Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file=linux_image, read_only=True)
747376Sgblack@eecs.umich.edu    image = CowDiskImage(child=Parent.raw_image, read_only=False)
757376Sgblack@eecs.umich.edu
767376Sgblack@eecs.umich.educlass LinuxSwapDisk(IdeDisk):
777376Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file = disk('linux-bigswap2.img'),
787376Sgblack@eecs.umich.edu                                  read_only=True)
797376Sgblack@eecs.umich.edu    image = CowDiskImage(child = Parent.raw_image, read_only=False)
807376Sgblack@eecs.umich.edu
817376Sgblack@eecs.umich.educlass SpecwebFilesetDisk(IdeDisk):
827376Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file = disk('specweb-fileset.img'),
837376Sgblack@eecs.umich.edu                                  read_only=True)
847376Sgblack@eecs.umich.edu    image = CowDiskImage(child = Parent.raw_image, read_only=False)
857376Sgblack@eecs.umich.edu
867376Sgblack@eecs.umich.educlass BaseTsunami(Tsunami):
877376Sgblack@eecs.umich.edu    cchip = TsunamiCChip(pio_addr=0x801a0000000)
887376Sgblack@eecs.umich.edu    pchip = TsunamiPChip(pio_addr=0x80180000000)
897376Sgblack@eecs.umich.edu    pciconfig = PciConfigAll(pio_addr=0x801fe000000)
907376Sgblack@eecs.umich.edu    fake_sm_chip = IsaFake(pio_addr=0x801fc000370)
917376Sgblack@eecs.umich.edu
927376Sgblack@eecs.umich.edu    fake_uart1 = IsaFake(pio_addr=0x801fc0002f8)
937376Sgblack@eecs.umich.edu    fake_uart2 = IsaFake(pio_addr=0x801fc0003e8)
947376Sgblack@eecs.umich.edu    fake_uart3 = IsaFake(pio_addr=0x801fc0002e8)
957376Sgblack@eecs.umich.edu    fake_uart4 = IsaFake(pio_addr=0x801fc0003f0)
967376Sgblack@eecs.umich.edu
977376Sgblack@eecs.umich.edu    fake_ppc = IsaFake(pio_addr=0x801fc0003bc)
987376Sgblack@eecs.umich.edu
997376Sgblack@eecs.umich.edu    fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000)
1007376Sgblack@eecs.umich.edu
1017376Sgblack@eecs.umich.edu    fake_pnp_addr = IsaFake(pio_addr=0x801fc000279)
1027376Sgblack@eecs.umich.edu    fake_pnp_write = IsaFake(pio_addr=0x801fc000a79)
1037376Sgblack@eecs.umich.edu    fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203)
1047376Sgblack@eecs.umich.edu    fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243)
1057376Sgblack@eecs.umich.edu    fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283)
1067376Sgblack@eecs.umich.edu    fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3)
1077376Sgblack@eecs.umich.edu    fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303)
1087376Sgblack@eecs.umich.edu    fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343)
1097376Sgblack@eecs.umich.edu    fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383)
1107376Sgblack@eecs.umich.edu    fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3)
1117376Sgblack@eecs.umich.edu
1127376Sgblack@eecs.umich.edu    fake_ata0 = IsaFake(pio_addr=0x801fc0001f0)
1137376Sgblack@eecs.umich.edu    fake_ata1 = IsaFake(pio_addr=0x801fc000170)
1147376Sgblack@eecs.umich.edu
1157376Sgblack@eecs.umich.edu    fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer')
1167376Sgblack@eecs.umich.edu    io = TsunamiIO(pio_addr=0x801fc000000)
1177376Sgblack@eecs.umich.edu    uart = Uart8250(pio_addr=0x801fc0003f8)
1187376Sgblack@eecs.umich.edu    ethernet = NSGigE(configdata=NSGigEPciData(),
1197376Sgblack@eecs.umich.edu                      pci_bus=0, pci_dev=1, pci_func=0)
1207376Sgblack@eecs.umich.edu    etherint = NSGigEInt(device=Parent.ethernet)
1217376Sgblack@eecs.umich.edu#    ethernet = Sinic(configdata=SinicPciData(),
1227376Sgblack@eecs.umich.edu#                      pci_bus=0, pci_dev=1, pci_func=0)
1237376Sgblack@eecs.umich.edu#    etherint = SinicInt(device=Parent.ethernet)
1247376Sgblack@eecs.umich.edu    console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk)
1257376Sgblack@eecs.umich.edu#    bridge = PciFake(configdata=BridgePciData(), pci_bus=0, pci_dev=2, pci_func=0)
1267376Sgblack@eecs.umich.edu
1277376Sgblack@eecs.umich.edu#class FreeBSDTsunami(BaseTsunami):
1287376Sgblack@eecs.umich.edu#    disk0 = FreeBSDRootDisk(delay='0us', driveID='master')
1297376Sgblack@eecs.umich.edu#    ide = IdeController(disks=[Parent.disk0],
1307376Sgblack@eecs.umich.edu#                        configdata=IdeControllerPciData(),
1317376Sgblack@eecs.umich.edu#                        pci_func=0, pci_dev=0, pci_bus=0)
1327376Sgblack@eecs.umich.edu
1337376Sgblack@eecs.umich.educlass LinuxTsunami(BaseTsunami):
1347376Sgblack@eecs.umich.edu    disk0 = LinuxRootDisk(driveID='master')
1357376Sgblack@eecs.umich.edu    disk1 = SpecwebFilesetDisk(driveID='slave')
1367376Sgblack@eecs.umich.edu    disk2 = LinuxSwapDisk(driveID='master')
1377376Sgblack@eecs.umich.edu    ide = IdeController(disks=[Parent.disk0, Parent.disk1, Parent.disk2],
1387376Sgblack@eecs.umich.edu                        configdata=IdeControllerPciData(),
1397376Sgblack@eecs.umich.edu                        pci_func=0, pci_dev=0, pci_bus=0)
1407376Sgblack@eecs.umich.edu
1417376Sgblack@eecs.umich.educlass LinuxAlphaSystem(LinuxAlphaSystem):
1427376Sgblack@eecs.umich.edu    magicbus = Bus()
1437376Sgblack@eecs.umich.edu    physmem = PhysicalMemory(range = AddrRange('128MB'))
1447376Sgblack@eecs.umich.edu    c1 = Connector(side_a=Parent.physmem, side_b=Parent.magicbus)
1457376Sgblack@eecs.umich.edu    tsunami = LinuxTsunami()
1467376Sgblack@eecs.umich.edu    c2 = Connector(side_a=Parent.tsunami.cchip, side_a_name='pio', side_b=Parent.magicbus)
1477376Sgblack@eecs.umich.edu    c3 = Connector(side_a=Parent.tsunami.pchip, side_a_name='pio', side_b=Parent.magicbus)
1487376Sgblack@eecs.umich.edu    c4 = Connector(side_a=Parent.tsunami.pciconfig, side_a_name='pio', side_b=Parent.magicbus)
1497376Sgblack@eecs.umich.edu    c5 = Connector(side_a=Parent.tsunami.fake_sm_chip, side_a_name='pio', side_b=Parent.magicbus)
1507376Sgblack@eecs.umich.edu    c6 = Connector(side_a=Parent.tsunami.ethernet, side_a_name='pio', side_b=Parent.magicbus)
1517376Sgblack@eecs.umich.edu    c6a = Connector(side_a=Parent.tsunami.ethernet, side_a_name='dma', side_b=Parent.magicbus)
1527376Sgblack@eecs.umich.edu    c7 = Connector(side_a=Parent.tsunami.fake_uart1, side_a_name='pio', side_b=Parent.magicbus)
1537376Sgblack@eecs.umich.edu    c8 = Connector(side_a=Parent.tsunami.fake_uart2, side_a_name='pio', side_b=Parent.magicbus)
1547376Sgblack@eecs.umich.edu    c9 = Connector(side_a=Parent.tsunami.fake_uart3, side_a_name='pio', side_b=Parent.magicbus)
1557376Sgblack@eecs.umich.edu    c10 = Connector(side_a=Parent.tsunami.fake_uart4, side_a_name='pio', side_b=Parent.magicbus)
1567376Sgblack@eecs.umich.edu    c11 = Connector(side_a=Parent.tsunami.ide, side_a_name='pio', side_b=Parent.magicbus)
1577376Sgblack@eecs.umich.edu    c13 = Connector(side_a=Parent.tsunami.ide, side_a_name='dma', side_b=Parent.magicbus)
1587376Sgblack@eecs.umich.edu    c12 = Connector(side_a=Parent.tsunami.fake_ppc, side_a_name='pio', side_b=Parent.magicbus)
1597376Sgblack@eecs.umich.edu    c14 = Connector(side_a=Parent.tsunami.fake_OROM, side_a_name='pio', side_b=Parent.magicbus)
1607376Sgblack@eecs.umich.edu    c16 = Connector(side_a=Parent.tsunami.fake_pnp_addr, side_a_name='pio', side_b=Parent.magicbus)
1617376Sgblack@eecs.umich.edu    c17 = Connector(side_a=Parent.tsunami.fake_pnp_write, side_a_name='pio', side_b=Parent.magicbus)
1627376Sgblack@eecs.umich.edu    c18 = Connector(side_a=Parent.tsunami.fake_pnp_read0, side_a_name='pio', side_b=Parent.magicbus)
1637376Sgblack@eecs.umich.edu    c19 = Connector(side_a=Parent.tsunami.fake_pnp_read1, side_a_name='pio', side_b=Parent.magicbus)
1647376Sgblack@eecs.umich.edu    c20 = Connector(side_a=Parent.tsunami.fake_pnp_read2, side_a_name='pio', side_b=Parent.magicbus)
1657376Sgblack@eecs.umich.edu    c21 = Connector(side_a=Parent.tsunami.fake_pnp_read3, side_a_name='pio', side_b=Parent.magicbus)
1667376Sgblack@eecs.umich.edu    c22 = Connector(side_a=Parent.tsunami.fake_pnp_read4, side_a_name='pio', side_b=Parent.magicbus)
1677376Sgblack@eecs.umich.edu    c23 = Connector(side_a=Parent.tsunami.fake_pnp_read5, side_a_name='pio', side_b=Parent.magicbus)
1687376Sgblack@eecs.umich.edu    c24 = Connector(side_a=Parent.tsunami.fake_pnp_read6, side_a_name='pio', side_b=Parent.magicbus)
1697376Sgblack@eecs.umich.edu    c25 = Connector(side_a=Parent.tsunami.fake_pnp_read7, side_a_name='pio', side_b=Parent.magicbus)
1707376Sgblack@eecs.umich.edu    c27 = Connector(side_a=Parent.tsunami.fake_ata0, side_a_name='pio', side_b=Parent.magicbus)
1717376Sgblack@eecs.umich.edu    c28 = Connector(side_a=Parent.tsunami.fake_ata1, side_a_name='pio', side_b=Parent.magicbus)
1727376Sgblack@eecs.umich.edu    c30 = Connector(side_a=Parent.tsunami.fb, side_a_name='pio', side_b=Parent.magicbus)
1737376Sgblack@eecs.umich.edu    c31 = Connector(side_a=Parent.tsunami.io, side_a_name='pio', side_b=Parent.magicbus)
1747376Sgblack@eecs.umich.edu    c32 = Connector(side_a=Parent.tsunami.uart, side_a_name='pio', side_b=Parent.magicbus)
1757376Sgblack@eecs.umich.edu    c33 = Connector(side_a=Parent.tsunami.console, side_a_name='pio', side_b=Parent.magicbus)
1767376Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file=disk('linux-latest.img'),
1777376Sgblack@eecs.umich.edu                             read_only=True)
1787376Sgblack@eecs.umich.edu    simple_disk = SimpleDisk(disk=Parent.raw_image)
1797376Sgblack@eecs.umich.edu    intrctrl = IntrControl()
1807376Sgblack@eecs.umich.edu    cpu = SimpleCPU(mem=Parent.magicbus)
1817376Sgblack@eecs.umich.edu    sim_console = SimConsole(listener=ConsoleListener(port=3456))
1827376Sgblack@eecs.umich.edu    kernel = '/z/saidi/work/m5.newmem/build/vmlinux'
1837376Sgblack@eecs.umich.edu    pal = binary('ts_osfpal')
1847376Sgblack@eecs.umich.edu    console = binary('console')
1857376Sgblack@eecs.umich.edu    boot_osflags = 'root=/dev/hda1 console=ttyS0'
1867376Sgblack@eecs.umich.edu#    readfile = os.path.join(test_base, 'halt.sh')
1877376Sgblack@eecs.umich.edu
1887322Sgblack@eecs.umich.edu
1897322Sgblack@eecs.umich.eduBaseCPU.itb = AlphaITB()
1907322Sgblack@eecs.umich.eduBaseCPU.dtb = AlphaDTB()
1917322Sgblack@eecs.umich.eduBaseCPU.system = Parent.any
1927322Sgblack@eecs.umich.edu
1937322Sgblack@eecs.umich.educlass TsunamiRoot(System):
1947396Sgblack@eecs.umich.edu    pass
1957644Sali.saidi@arm.com
1967640Sgblack@eecs.umich.edu
1977760SGiacomo.Gabrielli@arm.comdef DualRoot(ClientSystem, ServerSystem):
1987760SGiacomo.Gabrielli@arm.com    self = Root()
1997648SAli.Saidi@ARM.com    self.client = ClientSystem()
2007396Sgblack@eecs.umich.edu    self.server = ServerSystem()
2017396Sgblack@eecs.umich.edu
2027322Sgblack@eecs.umich.edu    self.etherdump = EtherDump(file='ethertrace')
2037324Sgblack@eecs.umich.edu    self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0],
2047644Sali.saidi@arm.com                               int2 = Parent.server.tsunami.etherint[0],
2057643Sgblack@eecs.umich.edu                               dump = Parent.etherdump)
2067643Sgblack@eecs.umich.edu    self.clock = '5GHz'
2077643Sgblack@eecs.umich.edu    return self
2087643Sgblack@eecs.umich.edu
2097643Sgblack@eecs.umich.eduroot = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')),
2107760SGiacomo.Gabrielli@arm.com                ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS')))
2117783SGiacomo.Gabrielli@arm.com
2128070SAli.Saidi@ARM.com