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