fs.py revision 2566
17087Snate@binkert.orgfrom m5 import *
27087Snate@binkert.orgimport os
37087Snate@binkert.orgfrom SysPaths import *
47087Snate@binkert.org
57087Snate@binkert.org# Base for tests is directory containing this file.
67087Snate@binkert.orgtest_base = os.path.dirname(__file__)
77087Snate@binkert.org
87087Snate@binkert.orglinux_image = env.get('LINUX_IMAGE', disk('linux-latest.img'))
97087Snate@binkert.org
107087Snate@binkert.orgclass IdeControllerPciData(PciConfigData):
117087Snate@binkert.org    VendorID = 0x8086
127087Snate@binkert.org    DeviceID = 0x7111
134158Sgblack@eecs.umich.edu    Command = 0x0
149921Syasuko.eckert@amd.com    Status = 0x280
159921Syasuko.eckert@amd.com    Revision = 0x0
164158Sgblack@eecs.umich.edu    ClassCode = 0x01
174158Sgblack@eecs.umich.edu    SubClassCode = 0x01
184158Sgblack@eecs.umich.edu    ProgIF = 0x85
194158Sgblack@eecs.umich.edu    BAR0 = 0x00000001
204158Sgblack@eecs.umich.edu    BAR1 = 0x00000001
214158Sgblack@eecs.umich.edu    BAR2 = 0x00000001
224158Sgblack@eecs.umich.edu    BAR3 = 0x00000001
234158Sgblack@eecs.umich.edu    BAR4 = 0x00000001
244158Sgblack@eecs.umich.edu    BAR5 = 0x00000001
254158Sgblack@eecs.umich.edu    InterruptLine = 0x1f
264158Sgblack@eecs.umich.edu    InterruptPin = 0x01
274158Sgblack@eecs.umich.edu    BAR0Size = '8B'
284158Sgblack@eecs.umich.edu    BAR1Size = '4B'
294158Sgblack@eecs.umich.edu    BAR2Size = '8B'
304158Sgblack@eecs.umich.edu    BAR3Size = '4B'
314158Sgblack@eecs.umich.edu    BAR4Size = '16B'
324158Sgblack@eecs.umich.edu
334158Sgblack@eecs.umich.educlass SinicPciData(PciConfigData):
344158Sgblack@eecs.umich.edu    VendorID = 0x1291
354158Sgblack@eecs.umich.edu    DeviceID = 0x1293
364158Sgblack@eecs.umich.edu    Status = 0x0290
374158Sgblack@eecs.umich.edu    SubClassCode = 0x00
384158Sgblack@eecs.umich.edu    ClassCode = 0x02
394158Sgblack@eecs.umich.edu    ProgIF = 0x00
404158Sgblack@eecs.umich.edu    BAR0 = 0x00000000
414158Sgblack@eecs.umich.edu    BAR1 = 0x00000000
424158Sgblack@eecs.umich.edu    BAR2 = 0x00000000
434158Sgblack@eecs.umich.edu    BAR3 = 0x00000000
448449Sgblack@eecs.umich.edu    BAR4 = 0x00000000
458449Sgblack@eecs.umich.edu    BAR5 = 0x00000000
468449Sgblack@eecs.umich.edu    MaximumLatency = 0x34
478449Sgblack@eecs.umich.edu    MinimumGrant = 0xb0
488449Sgblack@eecs.umich.edu    InterruptLine = 0x1e
498449Sgblack@eecs.umich.edu    InterruptPin = 0x01
508449Sgblack@eecs.umich.edu    BAR0Size = '64kB'
518449Sgblack@eecs.umich.edu
528449Sgblack@eecs.umich.educlass NSGigEPciData(PciConfigData):
538449Sgblack@eecs.umich.edu    VendorID = 0x100B
544158Sgblack@eecs.umich.edu    DeviceID = 0x0022
554158Sgblack@eecs.umich.edu    Status = 0x0290
566360Sgblack@eecs.umich.edu    SubClassCode = 0x00
576360Sgblack@eecs.umich.edu    ClassCode = 0x02
586360Sgblack@eecs.umich.edu    ProgIF = 0x00
596360Sgblack@eecs.umich.edu    BAR0 = 0x00000001
606360Sgblack@eecs.umich.edu    BAR1 = 0x00000000
616360Sgblack@eecs.umich.edu    BAR2 = 0x00000000
626360Sgblack@eecs.umich.edu    BAR3 = 0x00000000
636360Sgblack@eecs.umich.edu    BAR4 = 0x00000000
646360Sgblack@eecs.umich.edu    BAR5 = 0x00000000
656360Sgblack@eecs.umich.edu    MaximumLatency = 0x34
669921Syasuko.eckert@amd.com    MinimumGrant = 0xb0
679921Syasuko.eckert@amd.com    InterruptLine = 0x1e
686360Sgblack@eecs.umich.edu    InterruptPin = 0x01
696360Sgblack@eecs.umich.edu    BAR0Size = '256B'
706360Sgblack@eecs.umich.edu    BAR1Size = '4kB'
716360Sgblack@eecs.umich.edu
726360Sgblack@eecs.umich.educlass LinuxRootDisk(IdeDisk):
736360Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file=linux_image, read_only=True)
748500Sgblack@eecs.umich.edu    image = CowDiskImage(child=Parent.raw_image, read_only=False)
758500Sgblack@eecs.umich.edu
768500Sgblack@eecs.umich.educlass LinuxSwapDisk(IdeDisk):
778500Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file = disk('linux-bigswap2.img'),
788500Sgblack@eecs.umich.edu                                  read_only=True)
798500Sgblack@eecs.umich.edu    image = CowDiskImage(child = Parent.raw_image, read_only=False)
808500Sgblack@eecs.umich.edu
818500Sgblack@eecs.umich.educlass SpecwebFilesetDisk(IdeDisk):
828500Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file = disk('specweb-fileset.img'),
838500Sgblack@eecs.umich.edu                                  read_only=True)
848500Sgblack@eecs.umich.edu    image = CowDiskImage(child = Parent.raw_image, read_only=False)
858500Sgblack@eecs.umich.edu
868500Sgblack@eecs.umich.educlass BaseTsunami(Tsunami):
876360Sgblack@eecs.umich.edu    cchip = TsunamiCChip(pio_addr=0x801a0000000)
886360Sgblack@eecs.umich.edu    pchip = TsunamiPChip(pio_addr=0x80180000000)
894158Sgblack@eecs.umich.edu    pciconfig = PciConfigAll(pio_addr=0x801fe000000)
906360Sgblack@eecs.umich.edu    fake_sm_chip = IsaFake(pio_addr=0x801fc000370)
916360Sgblack@eecs.umich.edu
926360Sgblack@eecs.umich.edu    fake_uart1 = IsaFake(pio_addr=0x801fc0002f8)
936360Sgblack@eecs.umich.edu    fake_uart2 = IsaFake(pio_addr=0x801fc0003e8)
946360Sgblack@eecs.umich.edu    fake_uart3 = IsaFake(pio_addr=0x801fc0002e8)
956360Sgblack@eecs.umich.edu    fake_uart4 = IsaFake(pio_addr=0x801fc0003f0)
966360Sgblack@eecs.umich.edu
976360Sgblack@eecs.umich.edu    fake_ppc = IsaFake(pio_addr=0x801fc0003bc)
986360Sgblack@eecs.umich.edu
996360Sgblack@eecs.umich.edu    fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000)
1006360Sgblack@eecs.umich.edu
1016360Sgblack@eecs.umich.edu    fake_pnp_addr = IsaFake(pio_addr=0x801fc000279)
1026360Sgblack@eecs.umich.edu    fake_pnp_write = IsaFake(pio_addr=0x801fc000a79)
1036360Sgblack@eecs.umich.edu    fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203)
1046479Sgblack@eecs.umich.edu    fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243)
1056360Sgblack@eecs.umich.edu    fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283)
1066360Sgblack@eecs.umich.edu    fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3)
1076360Sgblack@eecs.umich.edu    fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303)
1086360Sgblack@eecs.umich.edu    fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343)
1096360Sgblack@eecs.umich.edu    fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383)
1106360Sgblack@eecs.umich.edu    fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3)
1116360Sgblack@eecs.umich.edu
1126360Sgblack@eecs.umich.edu    fake_ata0 = IsaFake(pio_addr=0x801fc0001f0)
1136360Sgblack@eecs.umich.edu    fake_ata1 = IsaFake(pio_addr=0x801fc000170)
1146360Sgblack@eecs.umich.edu
1156360Sgblack@eecs.umich.edu    fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer')
1166360Sgblack@eecs.umich.edu    io = TsunamiIO(pio_addr=0x801fc000000)
1177789Sgblack@eecs.umich.edu    uart = Uart8250(pio_addr=0x801fc0003f8)
1187789Sgblack@eecs.umich.edu    ethernet = NSGigE(configdata=NSGigEPciData(),
1197789Sgblack@eecs.umich.edu                      pci_bus=0, pci_dev=1, pci_func=0)
1207789Sgblack@eecs.umich.edu    etherint = NSGigEInt(device=Parent.ethernet)
1217789Sgblack@eecs.umich.edu#    ethernet = Sinic(configdata=SinicPciData(),
1227720Sgblack@eecs.umich.edu#                      pci_bus=0, pci_dev=1, pci_func=0)
1239212Snilay@cs.wisc.edu#    etherint = SinicInt(device=Parent.ethernet)
1249212Snilay@cs.wisc.edu    console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk)
1259921Syasuko.eckert@amd.com#    bridge = PciFake(configdata=BridgePciData(), pci_bus=0, pci_dev=2, pci_func=0)
1269921Syasuko.eckert@amd.com
1279921Syasuko.eckert@amd.com#class FreeBSDTsunami(BaseTsunami):
1289921Syasuko.eckert@amd.com#    disk0 = FreeBSDRootDisk(delay='0us', driveID='master')
1299921Syasuko.eckert@amd.com#    ide = IdeController(disks=[Parent.disk0],
1309212Snilay@cs.wisc.edu#                        configdata=IdeControllerPciData(),
1319212Snilay@cs.wisc.edu#                        pci_func=0, pci_dev=0, pci_bus=0)
1329212Snilay@cs.wisc.edu
1339212Snilay@cs.wisc.educlass LinuxTsunami(BaseTsunami):
1349212Snilay@cs.wisc.edu    disk0 = LinuxRootDisk(driveID='master')
1359212Snilay@cs.wisc.edu    disk1 = SpecwebFilesetDisk(driveID='slave')
1369212Snilay@cs.wisc.edu    disk2 = LinuxSwapDisk(driveID='master')
1379212Snilay@cs.wisc.edu    ide = IdeController(disks=[Parent.disk0, Parent.disk1, Parent.disk2],
1389212Snilay@cs.wisc.edu                        configdata=IdeControllerPciData(),
1399212Snilay@cs.wisc.edu                        pci_func=0, pci_dev=0, pci_bus=0)
1409212Snilay@cs.wisc.edu
1419212Snilay@cs.wisc.educlass LinuxAlphaSystem(LinuxAlphaSystem):
1429212Snilay@cs.wisc.edu    magicbus = Bus()
1439212Snilay@cs.wisc.edu    physmem = PhysicalMemory(range = AddrRange('128MB'))
1449212Snilay@cs.wisc.edu    c1 = Connector(side_a=Parent.physmem, side_b=Parent.magicbus)
1459212Snilay@cs.wisc.edu    tsunami = LinuxTsunami()
1469921Syasuko.eckert@amd.com    c2 = Connector(side_a=Parent.tsunami.cchip, side_a_name='pio', side_b=Parent.magicbus)
1479212Snilay@cs.wisc.edu    c3 = Connector(side_a=Parent.tsunami.pchip, side_a_name='pio', side_b=Parent.magicbus)
1489212Snilay@cs.wisc.edu    c4 = Connector(side_a=Parent.tsunami.pciconfig, side_a_name='pio', side_b=Parent.magicbus)
1499212Snilay@cs.wisc.edu    c5 = Connector(side_a=Parent.tsunami.fake_sm_chip, side_a_name='pio', side_b=Parent.magicbus)
1509212Snilay@cs.wisc.edu    c6 = Connector(side_a=Parent.tsunami.ethernet, side_a_name='pio', side_b=Parent.magicbus)
1519921Syasuko.eckert@amd.com    c6a = Connector(side_a=Parent.tsunami.ethernet, side_a_name='dma', side_b=Parent.magicbus)
1529212Snilay@cs.wisc.edu    c7 = Connector(side_a=Parent.tsunami.fake_uart1, side_a_name='pio', side_b=Parent.magicbus)
1539212Snilay@cs.wisc.edu    c8 = Connector(side_a=Parent.tsunami.fake_uart2, side_a_name='pio', side_b=Parent.magicbus)
1549212Snilay@cs.wisc.edu    c9 = Connector(side_a=Parent.tsunami.fake_uart3, side_a_name='pio', side_b=Parent.magicbus)
1559921Syasuko.eckert@amd.com    c10 = Connector(side_a=Parent.tsunami.fake_uart4, side_a_name='pio', side_b=Parent.magicbus)
1569212Snilay@cs.wisc.edu    c11 = Connector(side_a=Parent.tsunami.ide, side_a_name='pio', side_b=Parent.magicbus)
1579921Syasuko.eckert@amd.com    c13 = Connector(side_a=Parent.tsunami.ide, side_a_name='dma', side_b=Parent.magicbus)
1589212Snilay@cs.wisc.edu    c12 = Connector(side_a=Parent.tsunami.fake_ppc, side_a_name='pio', side_b=Parent.magicbus)
1599921Syasuko.eckert@amd.com    c14 = Connector(side_a=Parent.tsunami.fake_OROM, side_a_name='pio', side_b=Parent.magicbus)
1609212Snilay@cs.wisc.edu    c16 = Connector(side_a=Parent.tsunami.fake_pnp_addr, side_a_name='pio', side_b=Parent.magicbus)
1619212Snilay@cs.wisc.edu    c17 = Connector(side_a=Parent.tsunami.fake_pnp_write, side_a_name='pio', side_b=Parent.magicbus)
1625426Sgblack@eecs.umich.edu    c18 = Connector(side_a=Parent.tsunami.fake_pnp_read0, side_a_name='pio', side_b=Parent.magicbus)
1635082Sgblack@eecs.umich.edu    c19 = Connector(side_a=Parent.tsunami.fake_pnp_read1, side_a_name='pio', side_b=Parent.magicbus)
1649211Snilay@cs.wisc.edu    c20 = Connector(side_a=Parent.tsunami.fake_pnp_read2, side_a_name='pio', side_b=Parent.magicbus)
1659470Snilay@cs.wisc.edu    c21 = Connector(side_a=Parent.tsunami.fake_pnp_read3, side_a_name='pio', side_b=Parent.magicbus)
1669470Snilay@cs.wisc.edu    c22 = Connector(side_a=Parent.tsunami.fake_pnp_read4, side_a_name='pio', side_b=Parent.magicbus)
1679211Snilay@cs.wisc.edu    c23 = Connector(side_a=Parent.tsunami.fake_pnp_read5, side_a_name='pio', side_b=Parent.magicbus)
1689470Snilay@cs.wisc.edu    c24 = Connector(side_a=Parent.tsunami.fake_pnp_read6, side_a_name='pio', side_b=Parent.magicbus)
1699471Snilay@cs.wisc.edu    c25 = Connector(side_a=Parent.tsunami.fake_pnp_read7, side_a_name='pio', side_b=Parent.magicbus)
1709582Snilay@cs.wisc.edu    c27 = Connector(side_a=Parent.tsunami.fake_ata0, side_a_name='pio', side_b=Parent.magicbus)
1719470Snilay@cs.wisc.edu    c28 = Connector(side_a=Parent.tsunami.fake_ata1, side_a_name='pio', side_b=Parent.magicbus)
1725294Sgblack@eecs.umich.edu    c30 = Connector(side_a=Parent.tsunami.fb, side_a_name='pio', side_b=Parent.magicbus)
1736360Sgblack@eecs.umich.edu    c31 = Connector(side_a=Parent.tsunami.io, side_a_name='pio', side_b=Parent.magicbus)
1745290Sgblack@eecs.umich.edu    c32 = Connector(side_a=Parent.tsunami.uart, side_a_name='pio', side_b=Parent.magicbus)
1755294Sgblack@eecs.umich.edu    c33 = Connector(side_a=Parent.tsunami.console, side_a_name='pio', side_b=Parent.magicbus)
1765294Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file=disk('linux-latest.img'),
1778500Sgblack@eecs.umich.edu                             read_only=True)
1786360Sgblack@eecs.umich.edu    simple_disk = SimpleDisk(disk=Parent.raw_image)
1796360Sgblack@eecs.umich.edu    intrctrl = IntrControl()
1806360Sgblack@eecs.umich.edu    cpu = SimpleCPU(mem=Parent.magicbus)
1818500Sgblack@eecs.umich.edu    sim_console = SimConsole(listener=ConsoleListener(port=3456))
1826360Sgblack@eecs.umich.edu    kernel = '/z/saidi/work/m5.newmem/build/vmlinux'
1838500Sgblack@eecs.umich.edu    pal = binary('ts_osfpal')
1846360Sgblack@eecs.umich.edu    console = binary('console')
1856360Sgblack@eecs.umich.edu    boot_osflags = 'root=/dev/hda1 console=ttyS0'
1866360Sgblack@eecs.umich.edu#    readfile = os.path.join(test_base, 'halt.sh')
1878500Sgblack@eecs.umich.edu
1886360Sgblack@eecs.umich.edu
1895294Sgblack@eecs.umich.eduBaseCPU.itb = AlphaITB()
1905294Sgblack@eecs.umich.eduBaseCPU.dtb = AlphaDTB()
1918500Sgblack@eecs.umich.eduBaseCPU.system = Parent.any
1926360Sgblack@eecs.umich.edu
1936360Sgblack@eecs.umich.educlass TsunamiRoot(System):
1946360Sgblack@eecs.umich.edu    pass
1956360Sgblack@eecs.umich.edu
1966360Sgblack@eecs.umich.edu
1976360Sgblack@eecs.umich.edudef DualRoot(ClientSystem, ServerSystem):
1986360Sgblack@eecs.umich.edu    self = Root()
1998500Sgblack@eecs.umich.edu    self.client = ClientSystem()
2008500Sgblack@eecs.umich.edu    self.server = ServerSystem()
2016360Sgblack@eecs.umich.edu
2026360Sgblack@eecs.umich.edu    self.etherdump = EtherDump(file='ethertrace')
2036360Sgblack@eecs.umich.edu    self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0],
2048500Sgblack@eecs.umich.edu                               int2 = Parent.server.tsunami.etherint[0],
2056360Sgblack@eecs.umich.edu                               dump = Parent.etherdump)
2066360Sgblack@eecs.umich.edu    self.clock = '5GHz'
2074158Sgblack@eecs.umich.edu    return self
208
209root = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')),
210                ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS')))
211
212