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