fs.py revision 2566
15643Sgblack@eecs.umich.edufrom m5 import *
25643Sgblack@eecs.umich.eduimport os
35643Sgblack@eecs.umich.edufrom SysPaths import *
45643Sgblack@eecs.umich.edu
55643Sgblack@eecs.umich.edu# Base for tests is directory containing this file.
65643Sgblack@eecs.umich.edutest_base = os.path.dirname(__file__)
75643Sgblack@eecs.umich.edu
85643Sgblack@eecs.umich.edulinux_image = env.get('LINUX_IMAGE', disk('linux-latest.img'))
95643Sgblack@eecs.umich.edu
105643Sgblack@eecs.umich.educlass IdeControllerPciData(PciConfigData):
115643Sgblack@eecs.umich.edu    VendorID = 0x8086
125643Sgblack@eecs.umich.edu    DeviceID = 0x7111
135643Sgblack@eecs.umich.edu    Command = 0x0
145643Sgblack@eecs.umich.edu    Status = 0x280
155643Sgblack@eecs.umich.edu    Revision = 0x0
165643Sgblack@eecs.umich.edu    ClassCode = 0x01
175643Sgblack@eecs.umich.edu    SubClassCode = 0x01
185643Sgblack@eecs.umich.edu    ProgIF = 0x85
195643Sgblack@eecs.umich.edu    BAR0 = 0x00000001
205643Sgblack@eecs.umich.edu    BAR1 = 0x00000001
215643Sgblack@eecs.umich.edu    BAR2 = 0x00000001
225643Sgblack@eecs.umich.edu    BAR3 = 0x00000001
235643Sgblack@eecs.umich.edu    BAR4 = 0x00000001
245643Sgblack@eecs.umich.edu    BAR5 = 0x00000001
255643Sgblack@eecs.umich.edu    InterruptLine = 0x1f
265643Sgblack@eecs.umich.edu    InterruptPin = 0x01
275643Sgblack@eecs.umich.edu    BAR0Size = '8B'
285643Sgblack@eecs.umich.edu    BAR1Size = '4B'
295643Sgblack@eecs.umich.edu    BAR2Size = '8B'
305643Sgblack@eecs.umich.edu    BAR3Size = '4B'
3111793Sbrandon.potter@amd.com    BAR4Size = '16B'
3211793Sbrandon.potter@amd.com
336138Sgblack@eecs.umich.educlass SinicPciData(PciConfigData):
345651Sgblack@eecs.umich.edu    VendorID = 0x1291
358746Sgblack@eecs.umich.edu    DeviceID = 0x1293
368232Snate@binkert.org    Status = 0x0290
375657Sgblack@eecs.umich.edu    SubClassCode = 0x00
385643Sgblack@eecs.umich.edu    ClassCode = 0x02
395643Sgblack@eecs.umich.edu    ProgIF = 0x00
405643Sgblack@eecs.umich.edu    BAR0 = 0x00000000
415643Sgblack@eecs.umich.edu    BAR1 = 0x00000000
429805Sstever@gmail.com    BAR2 = 0x00000000
439808Sstever@gmail.com    BAR3 = 0x00000000
449805Sstever@gmail.com    BAR4 = 0x00000000
455643Sgblack@eecs.umich.edu    BAR5 = 0x00000000
467913SBrad.Beckmann@amd.com    MaximumLatency = 0x34
477913SBrad.Beckmann@amd.com    MinimumGrant = 0xb0
487913SBrad.Beckmann@amd.com    InterruptLine = 0x1e
497913SBrad.Beckmann@amd.com    InterruptPin = 0x01
507913SBrad.Beckmann@amd.com    BAR0Size = '64kB'
516136Sgblack@eecs.umich.edu
525643Sgblack@eecs.umich.educlass NSGigEPciData(PciConfigData):
535643Sgblack@eecs.umich.edu    VendorID = 0x100B
545653Sgblack@eecs.umich.edu    DeviceID = 0x0022
555653Sgblack@eecs.umich.edu    Status = 0x0290
565653Sgblack@eecs.umich.edu    SubClassCode = 0x00
575653Sgblack@eecs.umich.edu    ClassCode = 0x02
585827Sgblack@eecs.umich.edu    ProgIF = 0x00
595653Sgblack@eecs.umich.edu    BAR0 = 0x00000001
6014290Sgabeblack@google.com    BAR1 = 0x00000000
6114290Sgabeblack@google.com    BAR2 = 0x00000000
6214291Sgabeblack@google.com    BAR3 = 0x00000000
6314290Sgabeblack@google.com    BAR4 = 0x00000000
645643Sgblack@eecs.umich.edu    BAR5 = 0x00000000
655643Sgblack@eecs.umich.edu    MaximumLatency = 0x34
667913SBrad.Beckmann@amd.com    MinimumGrant = 0xb0
677913SBrad.Beckmann@amd.com    InterruptLine = 0x1e
687913SBrad.Beckmann@amd.com    InterruptPin = 0x01
697913SBrad.Beckmann@amd.com    BAR0Size = '256B'
707913SBrad.Beckmann@amd.com    BAR1Size = '4kB'
719807Sstever@gmail.com
727913SBrad.Beckmann@amd.comclass LinuxRootDisk(IdeDisk):
739805Sstever@gmail.com    raw_image = RawDiskImage(image_file=linux_image, read_only=True)
749807Sstever@gmail.com    image = CowDiskImage(child=Parent.raw_image, read_only=False)
757913SBrad.Beckmann@amd.com
767913SBrad.Beckmann@amd.comclass LinuxSwapDisk(IdeDisk):
7713784Sgabeblack@google.com    raw_image = RawDiskImage(image_file = disk('linux-bigswap2.img'),
7813784Sgabeblack@google.com                                  read_only=True)
799805Sstever@gmail.com    image = CowDiskImage(child = Parent.raw_image, read_only=False)
809805Sstever@gmail.com
819805Sstever@gmail.comclass SpecwebFilesetDisk(IdeDisk):
8214290Sgabeblack@google.com    raw_image = RawDiskImage(image_file = disk('specweb-fileset.img'),
8314290Sgabeblack@google.com                                  read_only=True)
8414290Sgabeblack@google.com    image = CowDiskImage(child = Parent.raw_image, read_only=False)
8514290Sgabeblack@google.com
869805Sstever@gmail.comclass BaseTsunami(Tsunami):
879805Sstever@gmail.com    cchip = TsunamiCChip(pio_addr=0x801a0000000)
8814295Sgabeblack@google.com    pchip = TsunamiPChip(pio_addr=0x80180000000)
8911144Sjthestness@gmail.com    pciconfig = PciConfigAll(pio_addr=0x801fe000000)
9011144Sjthestness@gmail.com    fake_sm_chip = IsaFake(pio_addr=0x801fc000370)
9111144Sjthestness@gmail.com
9211144Sjthestness@gmail.com    fake_uart1 = IsaFake(pio_addr=0x801fc0002f8)
9314295Sgabeblack@google.com    fake_uart2 = IsaFake(pio_addr=0x801fc0003e8)
9411144Sjthestness@gmail.com    fake_uart3 = IsaFake(pio_addr=0x801fc0002e8)
9511144Sjthestness@gmail.com    fake_uart4 = IsaFake(pio_addr=0x801fc0003f0)
9611144Sjthestness@gmail.com
975643Sgblack@eecs.umich.edu    fake_ppc = IsaFake(pio_addr=0x801fc0003bc)
985643Sgblack@eecs.umich.edu
995643Sgblack@eecs.umich.edu    fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000)
1005643Sgblack@eecs.umich.edu
1015643Sgblack@eecs.umich.edu    fake_pnp_addr = IsaFake(pio_addr=0x801fc000279)
1025643Sgblack@eecs.umich.edu    fake_pnp_write = IsaFake(pio_addr=0x801fc000a79)
10313229Sgabeblack@google.com    fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203)
1045643Sgblack@eecs.umich.edu    fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243)
1055643Sgblack@eecs.umich.edu    fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283)
10613229Sgabeblack@google.com    fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3)
1075643Sgblack@eecs.umich.edu    fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303)
1085643Sgblack@eecs.umich.edu    fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343)
1095643Sgblack@eecs.umich.edu    fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383)
1105643Sgblack@eecs.umich.edu    fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3)
1115898Sgblack@eecs.umich.edu
1129805Sstever@gmail.com    fake_ata0 = IsaFake(pio_addr=0x801fc0001f0)
1135643Sgblack@eecs.umich.edu    fake_ata1 = IsaFake(pio_addr=0x801fc000170)
1145643Sgblack@eecs.umich.edu
1155643Sgblack@eecs.umich.edu    fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer')
1165643Sgblack@eecs.umich.edu    io = TsunamiIO(pio_addr=0x801fc000000)
1175643Sgblack@eecs.umich.edu    uart = Uart8250(pio_addr=0x801fc0003f8)
1185643Sgblack@eecs.umich.edu    ethernet = NSGigE(configdata=NSGigEPciData(),
1195643Sgblack@eecs.umich.edu                      pci_bus=0, pci_dev=1, pci_func=0)
1205643Sgblack@eecs.umich.edu    etherint = NSGigEInt(device=Parent.ethernet)
1215643Sgblack@eecs.umich.edu#    ethernet = Sinic(configdata=SinicPciData(),
12213229Sgabeblack@google.com#                      pci_bus=0, pci_dev=1, pci_func=0)
1235643Sgblack@eecs.umich.edu#    etherint = SinicInt(device=Parent.ethernet)
1245643Sgblack@eecs.umich.edu    console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk)
12513229Sgabeblack@google.com#    bridge = PciFake(configdata=BridgePciData(), pci_bus=0, pci_dev=2, pci_func=0)
1265643Sgblack@eecs.umich.edu
1275643Sgblack@eecs.umich.edu#class FreeBSDTsunami(BaseTsunami):
1285643Sgblack@eecs.umich.edu#    disk0 = FreeBSDRootDisk(delay='0us', driveID='master')
1295643Sgblack@eecs.umich.edu#    ide = IdeController(disks=[Parent.disk0],
1305898Sgblack@eecs.umich.edu#                        configdata=IdeControllerPciData(),
1319805Sstever@gmail.com#                        pci_func=0, pci_dev=0, pci_bus=0)
1325643Sgblack@eecs.umich.edu
1335643Sgblack@eecs.umich.educlass LinuxTsunami(BaseTsunami):
1345643Sgblack@eecs.umich.edu    disk0 = LinuxRootDisk(driveID='master')
1355643Sgblack@eecs.umich.edu    disk1 = SpecwebFilesetDisk(driveID='slave')
1365643Sgblack@eecs.umich.edu    disk2 = LinuxSwapDisk(driveID='master')
1375643Sgblack@eecs.umich.edu    ide = IdeController(disks=[Parent.disk0, Parent.disk1, Parent.disk2],
1387913SBrad.Beckmann@amd.com                        configdata=IdeControllerPciData(),
1395643Sgblack@eecs.umich.edu                        pci_func=0, pci_dev=0, pci_bus=0)
1405643Sgblack@eecs.umich.edu
1415643Sgblack@eecs.umich.educlass LinuxAlphaSystem(LinuxAlphaSystem):
1427913SBrad.Beckmann@amd.com    magicbus = Bus()
1435643Sgblack@eecs.umich.edu    physmem = PhysicalMemory(range = AddrRange('128MB'))
1445643Sgblack@eecs.umich.edu    c1 = Connector(side_a=Parent.physmem, side_b=Parent.magicbus)
1455643Sgblack@eecs.umich.edu    tsunami = LinuxTsunami()
1465643Sgblack@eecs.umich.edu    c2 = Connector(side_a=Parent.tsunami.cchip, side_a_name='pio', side_b=Parent.magicbus)
1475643Sgblack@eecs.umich.edu    c3 = Connector(side_a=Parent.tsunami.pchip, side_a_name='pio', side_b=Parent.magicbus)
1485643Sgblack@eecs.umich.edu    c4 = Connector(side_a=Parent.tsunami.pciconfig, side_a_name='pio', side_b=Parent.magicbus)
1495643Sgblack@eecs.umich.edu    c5 = Connector(side_a=Parent.tsunami.fake_sm_chip, side_a_name='pio', side_b=Parent.magicbus)
1505643Sgblack@eecs.umich.edu    c6 = Connector(side_a=Parent.tsunami.ethernet, side_a_name='pio', side_b=Parent.magicbus)
1515643Sgblack@eecs.umich.edu    c6a = Connector(side_a=Parent.tsunami.ethernet, side_a_name='dma', side_b=Parent.magicbus)
1525643Sgblack@eecs.umich.edu    c7 = Connector(side_a=Parent.tsunami.fake_uart1, side_a_name='pio', side_b=Parent.magicbus)
1535643Sgblack@eecs.umich.edu    c8 = Connector(side_a=Parent.tsunami.fake_uart2, side_a_name='pio', side_b=Parent.magicbus)
1545643Sgblack@eecs.umich.edu    c9 = Connector(side_a=Parent.tsunami.fake_uart3, side_a_name='pio', side_b=Parent.magicbus)
1555643Sgblack@eecs.umich.edu    c10 = Connector(side_a=Parent.tsunami.fake_uart4, side_a_name='pio', side_b=Parent.magicbus)
1565643Sgblack@eecs.umich.edu    c11 = Connector(side_a=Parent.tsunami.ide, side_a_name='pio', side_b=Parent.magicbus)
1575643Sgblack@eecs.umich.edu    c13 = Connector(side_a=Parent.tsunami.ide, side_a_name='dma', side_b=Parent.magicbus)
1585643Sgblack@eecs.umich.edu    c12 = Connector(side_a=Parent.tsunami.fake_ppc, side_a_name='pio', side_b=Parent.magicbus)
1595643Sgblack@eecs.umich.edu    c14 = Connector(side_a=Parent.tsunami.fake_OROM, side_a_name='pio', side_b=Parent.magicbus)
1605643Sgblack@eecs.umich.edu    c16 = Connector(side_a=Parent.tsunami.fake_pnp_addr, side_a_name='pio', side_b=Parent.magicbus)
1615643Sgblack@eecs.umich.edu    c17 = Connector(side_a=Parent.tsunami.fake_pnp_write, side_a_name='pio', side_b=Parent.magicbus)
1625643Sgblack@eecs.umich.edu    c18 = Connector(side_a=Parent.tsunami.fake_pnp_read0, side_a_name='pio', side_b=Parent.magicbus)
1635643Sgblack@eecs.umich.edu    c19 = Connector(side_a=Parent.tsunami.fake_pnp_read1, side_a_name='pio', side_b=Parent.magicbus)
1645643Sgblack@eecs.umich.edu    c20 = Connector(side_a=Parent.tsunami.fake_pnp_read2, side_a_name='pio', side_b=Parent.magicbus)
1655643Sgblack@eecs.umich.edu    c21 = Connector(side_a=Parent.tsunami.fake_pnp_read3, side_a_name='pio', side_b=Parent.magicbus)
1665643Sgblack@eecs.umich.edu    c22 = Connector(side_a=Parent.tsunami.fake_pnp_read4, side_a_name='pio', side_b=Parent.magicbus)
1675643Sgblack@eecs.umich.edu    c23 = Connector(side_a=Parent.tsunami.fake_pnp_read5, side_a_name='pio', side_b=Parent.magicbus)
1685643Sgblack@eecs.umich.edu    c24 = Connector(side_a=Parent.tsunami.fake_pnp_read6, side_a_name='pio', side_b=Parent.magicbus)
1695643Sgblack@eecs.umich.edu    c25 = Connector(side_a=Parent.tsunami.fake_pnp_read7, side_a_name='pio', side_b=Parent.magicbus)
1705643Sgblack@eecs.umich.edu    c27 = Connector(side_a=Parent.tsunami.fake_ata0, side_a_name='pio', side_b=Parent.magicbus)
1715643Sgblack@eecs.umich.edu    c28 = Connector(side_a=Parent.tsunami.fake_ata1, side_a_name='pio', side_b=Parent.magicbus)
1725643Sgblack@eecs.umich.edu    c30 = Connector(side_a=Parent.tsunami.fb, side_a_name='pio', side_b=Parent.magicbus)
1735643Sgblack@eecs.umich.edu    c31 = Connector(side_a=Parent.tsunami.io, side_a_name='pio', side_b=Parent.magicbus)
1745643Sgblack@eecs.umich.edu    c32 = Connector(side_a=Parent.tsunami.uart, side_a_name='pio', side_b=Parent.magicbus)
1755643Sgblack@eecs.umich.edu    c33 = Connector(side_a=Parent.tsunami.console, side_a_name='pio', side_b=Parent.magicbus)
1765643Sgblack@eecs.umich.edu    raw_image = RawDiskImage(image_file=disk('linux-latest.img'),
1775643Sgblack@eecs.umich.edu                             read_only=True)
1785643Sgblack@eecs.umich.edu    simple_disk = SimpleDisk(disk=Parent.raw_image)
1795643Sgblack@eecs.umich.edu    intrctrl = IntrControl()
1805643Sgblack@eecs.umich.edu    cpu = SimpleCPU(mem=Parent.magicbus)
1815643Sgblack@eecs.umich.edu    sim_console = SimConsole(listener=ConsoleListener(port=3456))
1825643Sgblack@eecs.umich.edu    kernel = '/z/saidi/work/m5.newmem/build/vmlinux'
1835643Sgblack@eecs.umich.edu    pal = binary('ts_osfpal')
1845643Sgblack@eecs.umich.edu    console = binary('console')
1855643Sgblack@eecs.umich.edu    boot_osflags = 'root=/dev/hda1 console=ttyS0'
1865643Sgblack@eecs.umich.edu#    readfile = os.path.join(test_base, 'halt.sh')
1875643Sgblack@eecs.umich.edu
1885643Sgblack@eecs.umich.edu
1895643Sgblack@eecs.umich.eduBaseCPU.itb = AlphaITB()
1905643Sgblack@eecs.umich.eduBaseCPU.dtb = AlphaDTB()
1915643Sgblack@eecs.umich.eduBaseCPU.system = Parent.any
1925643Sgblack@eecs.umich.edu
1935643Sgblack@eecs.umich.educlass TsunamiRoot(System):
1946712Snate@binkert.org    pass
1955651Sgblack@eecs.umich.edu
1965657Sgblack@eecs.umich.edu
1975657Sgblack@eecs.umich.edudef DualRoot(ClientSystem, ServerSystem):
1985657Sgblack@eecs.umich.edu    self = Root()
1995657Sgblack@eecs.umich.edu    self.client = ClientSystem()
2005657Sgblack@eecs.umich.edu    self.server = ServerSystem()
2015657Sgblack@eecs.umich.edu
2025651Sgblack@eecs.umich.edu    self.etherdump = EtherDump(file='ethertrace')
2035651Sgblack@eecs.umich.edu    self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0],
2045654Sgblack@eecs.umich.edu                               int2 = Parent.server.tsunami.etherint[0],
2055654Sgblack@eecs.umich.edu                               dump = Parent.etherdump)
2066138Sgblack@eecs.umich.edu    self.clock = '5GHz'
2076138Sgblack@eecs.umich.edu    return self
2086138Sgblack@eecs.umich.edu
2096138Sgblack@eecs.umich.eduroot = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')),
2106138Sgblack@eecs.umich.edu                ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS')))
2116138Sgblack@eecs.umich.edu
2126138Sgblack@eecs.umich.edu