fs.py revision 2566
1from m5 import * 2import os 3from SysPaths import * 4 5# Base for tests is directory containing this file. 6test_base = os.path.dirname(__file__) 7 8linux_image = env.get('LINUX_IMAGE', disk('linux-latest.img')) 9 10class IdeControllerPciData(PciConfigData): 11 VendorID = 0x8086 12 DeviceID = 0x7111 13 Command = 0x0 14 Status = 0x280 15 Revision = 0x0 16 ClassCode = 0x01 17 SubClassCode = 0x01 18 ProgIF = 0x85 19 BAR0 = 0x00000001 20 BAR1 = 0x00000001 21 BAR2 = 0x00000001 22 BAR3 = 0x00000001 23 BAR4 = 0x00000001 24 BAR5 = 0x00000001 25 InterruptLine = 0x1f 26 InterruptPin = 0x01 27 BAR0Size = '8B' 28 BAR1Size = '4B' 29 BAR2Size = '8B' 30 BAR3Size = '4B' 31 BAR4Size = '16B' 32 33class SinicPciData(PciConfigData): 34 VendorID = 0x1291 35 DeviceID = 0x1293 36 Status = 0x0290 37 SubClassCode = 0x00 38 ClassCode = 0x02 39 ProgIF = 0x00 40 BAR0 = 0x00000000 41 BAR1 = 0x00000000 42 BAR2 = 0x00000000 43 BAR3 = 0x00000000 44 BAR4 = 0x00000000 45 BAR5 = 0x00000000 46 MaximumLatency = 0x34 47 MinimumGrant = 0xb0 48 InterruptLine = 0x1e 49 InterruptPin = 0x01 50 BAR0Size = '64kB' 51 52class NSGigEPciData(PciConfigData): 53 VendorID = 0x100B 54 DeviceID = 0x0022 55 Status = 0x0290 56 SubClassCode = 0x00 57 ClassCode = 0x02 58 ProgIF = 0x00 59 BAR0 = 0x00000001 60 BAR1 = 0x00000000 61 BAR2 = 0x00000000 62 BAR3 = 0x00000000 63 BAR4 = 0x00000000 64 BAR5 = 0x00000000 65 MaximumLatency = 0x34 66 MinimumGrant = 0xb0 67 InterruptLine = 0x1e 68 InterruptPin = 0x01 69 BAR0Size = '256B' 70 BAR1Size = '4kB' 71 72class LinuxRootDisk(IdeDisk): 73 raw_image = RawDiskImage(image_file=linux_image, read_only=True) 74 image = CowDiskImage(child=Parent.raw_image, read_only=False) 75 76class LinuxSwapDisk(IdeDisk): 77 raw_image = RawDiskImage(image_file = disk('linux-bigswap2.img'), 78 read_only=True) 79 image = CowDiskImage(child = Parent.raw_image, read_only=False) 80 81class SpecwebFilesetDisk(IdeDisk): 82 raw_image = RawDiskImage(image_file = disk('specweb-fileset.img'), 83 read_only=True) 84 image = CowDiskImage(child = Parent.raw_image, read_only=False) 85 86class BaseTsunami(Tsunami): 87 cchip = TsunamiCChip(pio_addr=0x801a0000000) 88 pchip = TsunamiPChip(pio_addr=0x80180000000) 89 pciconfig = PciConfigAll(pio_addr=0x801fe000000) 90 fake_sm_chip = IsaFake(pio_addr=0x801fc000370) 91 92 fake_uart1 = IsaFake(pio_addr=0x801fc0002f8) 93 fake_uart2 = IsaFake(pio_addr=0x801fc0003e8) 94 fake_uart3 = IsaFake(pio_addr=0x801fc0002e8) 95 fake_uart4 = IsaFake(pio_addr=0x801fc0003f0) 96 97 fake_ppc = IsaFake(pio_addr=0x801fc0003bc) 98 99 fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000) 100 101 fake_pnp_addr = IsaFake(pio_addr=0x801fc000279) 102 fake_pnp_write = IsaFake(pio_addr=0x801fc000a79) 103 fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203) 104 fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243) 105 fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283) 106 fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3) 107 fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303) 108 fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343) 109 fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383) 110 fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3) 111 112 fake_ata0 = IsaFake(pio_addr=0x801fc0001f0) 113 fake_ata1 = IsaFake(pio_addr=0x801fc000170) 114 115 fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer') 116 io = TsunamiIO(pio_addr=0x801fc000000) 117 uart = Uart8250(pio_addr=0x801fc0003f8) 118 ethernet = NSGigE(configdata=NSGigEPciData(), 119 pci_bus=0, pci_dev=1, pci_func=0) 120 etherint = NSGigEInt(device=Parent.ethernet) 121# ethernet = Sinic(configdata=SinicPciData(), 122# pci_bus=0, pci_dev=1, pci_func=0) 123# etherint = SinicInt(device=Parent.ethernet) 124 console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk) 125# bridge = PciFake(configdata=BridgePciData(), pci_bus=0, pci_dev=2, pci_func=0) 126 127#class FreeBSDTsunami(BaseTsunami): 128# disk0 = FreeBSDRootDisk(delay='0us', driveID='master') 129# ide = IdeController(disks=[Parent.disk0], 130# configdata=IdeControllerPciData(), 131# pci_func=0, pci_dev=0, pci_bus=0) 132 133class LinuxTsunami(BaseTsunami): 134 disk0 = LinuxRootDisk(driveID='master') 135 disk1 = SpecwebFilesetDisk(driveID='slave') 136 disk2 = LinuxSwapDisk(driveID='master') 137 ide = IdeController(disks=[Parent.disk0, Parent.disk1, Parent.disk2], 138 configdata=IdeControllerPciData(), 139 pci_func=0, pci_dev=0, pci_bus=0) 140 141class LinuxAlphaSystem(LinuxAlphaSystem): 142 magicbus = Bus() 143 physmem = PhysicalMemory(range = AddrRange('128MB')) 144 c1 = Connector(side_a=Parent.physmem, side_b=Parent.magicbus) 145 tsunami = LinuxTsunami() 146 c2 = Connector(side_a=Parent.tsunami.cchip, side_a_name='pio', side_b=Parent.magicbus) 147 c3 = Connector(side_a=Parent.tsunami.pchip, side_a_name='pio', side_b=Parent.magicbus) 148 c4 = Connector(side_a=Parent.tsunami.pciconfig, side_a_name='pio', side_b=Parent.magicbus) 149 c5 = Connector(side_a=Parent.tsunami.fake_sm_chip, side_a_name='pio', side_b=Parent.magicbus) 150 c6 = Connector(side_a=Parent.tsunami.ethernet, side_a_name='pio', side_b=Parent.magicbus) 151 c6a = Connector(side_a=Parent.tsunami.ethernet, side_a_name='dma', side_b=Parent.magicbus) 152 c7 = Connector(side_a=Parent.tsunami.fake_uart1, side_a_name='pio', side_b=Parent.magicbus) 153 c8 = Connector(side_a=Parent.tsunami.fake_uart2, side_a_name='pio', side_b=Parent.magicbus) 154 c9 = Connector(side_a=Parent.tsunami.fake_uart3, side_a_name='pio', side_b=Parent.magicbus) 155 c10 = Connector(side_a=Parent.tsunami.fake_uart4, side_a_name='pio', side_b=Parent.magicbus) 156 c11 = Connector(side_a=Parent.tsunami.ide, side_a_name='pio', side_b=Parent.magicbus) 157 c13 = Connector(side_a=Parent.tsunami.ide, side_a_name='dma', side_b=Parent.magicbus) 158 c12 = Connector(side_a=Parent.tsunami.fake_ppc, side_a_name='pio', side_b=Parent.magicbus) 159 c14 = Connector(side_a=Parent.tsunami.fake_OROM, side_a_name='pio', side_b=Parent.magicbus) 160 c16 = Connector(side_a=Parent.tsunami.fake_pnp_addr, side_a_name='pio', side_b=Parent.magicbus) 161 c17 = Connector(side_a=Parent.tsunami.fake_pnp_write, side_a_name='pio', side_b=Parent.magicbus) 162 c18 = Connector(side_a=Parent.tsunami.fake_pnp_read0, side_a_name='pio', side_b=Parent.magicbus) 163 c19 = Connector(side_a=Parent.tsunami.fake_pnp_read1, side_a_name='pio', side_b=Parent.magicbus) 164 c20 = Connector(side_a=Parent.tsunami.fake_pnp_read2, side_a_name='pio', side_b=Parent.magicbus) 165 c21 = Connector(side_a=Parent.tsunami.fake_pnp_read3, side_a_name='pio', side_b=Parent.magicbus) 166 c22 = Connector(side_a=Parent.tsunami.fake_pnp_read4, side_a_name='pio', side_b=Parent.magicbus) 167 c23 = Connector(side_a=Parent.tsunami.fake_pnp_read5, side_a_name='pio', side_b=Parent.magicbus) 168 c24 = Connector(side_a=Parent.tsunami.fake_pnp_read6, side_a_name='pio', side_b=Parent.magicbus) 169 c25 = Connector(side_a=Parent.tsunami.fake_pnp_read7, side_a_name='pio', side_b=Parent.magicbus) 170 c27 = Connector(side_a=Parent.tsunami.fake_ata0, side_a_name='pio', side_b=Parent.magicbus) 171 c28 = Connector(side_a=Parent.tsunami.fake_ata1, side_a_name='pio', side_b=Parent.magicbus) 172 c30 = Connector(side_a=Parent.tsunami.fb, side_a_name='pio', side_b=Parent.magicbus) 173 c31 = Connector(side_a=Parent.tsunami.io, side_a_name='pio', side_b=Parent.magicbus) 174 c32 = Connector(side_a=Parent.tsunami.uart, side_a_name='pio', side_b=Parent.magicbus) 175 c33 = Connector(side_a=Parent.tsunami.console, side_a_name='pio', side_b=Parent.magicbus) 176 raw_image = RawDiskImage(image_file=disk('linux-latest.img'), 177 read_only=True) 178 simple_disk = SimpleDisk(disk=Parent.raw_image) 179 intrctrl = IntrControl() 180 cpu = SimpleCPU(mem=Parent.magicbus) 181 sim_console = SimConsole(listener=ConsoleListener(port=3456)) 182 kernel = '/z/saidi/work/m5.newmem/build/vmlinux' 183 pal = binary('ts_osfpal') 184 console = binary('console') 185 boot_osflags = 'root=/dev/hda1 console=ttyS0' 186# readfile = os.path.join(test_base, 'halt.sh') 187 188 189BaseCPU.itb = AlphaITB() 190BaseCPU.dtb = AlphaDTB() 191BaseCPU.system = Parent.any 192 193class TsunamiRoot(System): 194 pass 195 196 197def DualRoot(ClientSystem, ServerSystem): 198 self = Root() 199 self.client = ClientSystem() 200 self.server = ServerSystem() 201 202 self.etherdump = EtherDump(file='ethertrace') 203 self.etherlink = EtherLink(int1 = Parent.client.tsunami.etherint[0], 204 int2 = Parent.server.tsunami.etherint[0], 205 dump = Parent.etherdump) 206 self.clock = '5GHz' 207 return self 208 209root = DualRoot(ClientSystem = LinuxAlphaSystem(readfile=script('netperf-stream-nt-client.rcS')), 210 ServerSystem = LinuxAlphaSystem(readfile=script('netperf-server.rcS'))) 211 212