Tsunami.py revision 3847
16166Ssteve.reinhardt@amd.comfrom m5.params import * 26166Ssteve.reinhardt@amd.comfrom m5.proxy import * 36166Ssteve.reinhardt@amd.comfrom Device import BasicPioDevice, IsaFake, BadAddr 46166Ssteve.reinhardt@amd.comfrom Platform import Platform 56166Ssteve.reinhardt@amd.comfrom AlphaConsole import AlphaConsole 66166Ssteve.reinhardt@amd.comfrom Uart import Uart8250 76166Ssteve.reinhardt@amd.comfrom Pci import PciConfigAll 86166Ssteve.reinhardt@amd.comfrom BadDevice import BadDevice 96166Ssteve.reinhardt@amd.com 106166Ssteve.reinhardt@amd.comclass TsunamiCChip(BasicPioDevice): 116166Ssteve.reinhardt@amd.com type = 'TsunamiCChip' 126166Ssteve.reinhardt@amd.com tsunami = Param.Tsunami(Parent.any, "Tsunami") 136166Ssteve.reinhardt@amd.com 146166Ssteve.reinhardt@amd.comclass TsunamiIO(BasicPioDevice): 156166Ssteve.reinhardt@amd.com type = 'TsunamiIO' 166166Ssteve.reinhardt@amd.com time = Param.UInt64(1136073600, 176166Ssteve.reinhardt@amd.com "System time to use (0 for actual time, default is 1/1/06)") 186166Ssteve.reinhardt@amd.com tsunami = Param.Tsunami(Parent.any, "Tsunami") 196166Ssteve.reinhardt@amd.com frequency = Param.Frequency('1024Hz', "frequency of interrupts") 206166Ssteve.reinhardt@amd.com 216166Ssteve.reinhardt@amd.comclass TsunamiPChip(BasicPioDevice): 226166Ssteve.reinhardt@amd.com type = 'TsunamiPChip' 236166Ssteve.reinhardt@amd.com tsunami = Param.Tsunami(Parent.any, "Tsunami") 246166Ssteve.reinhardt@amd.com 256166Ssteve.reinhardt@amd.comclass Tsunami(Platform): 266166Ssteve.reinhardt@amd.com type = 'Tsunami' 276166Ssteve.reinhardt@amd.com system = Param.System(Parent.any, "system") 286166Ssteve.reinhardt@amd.com 296166Ssteve.reinhardt@amd.com cchip = TsunamiCChip(pio_addr=0x801a0000000) 306166Ssteve.reinhardt@amd.com pchip = TsunamiPChip(pio_addr=0x80180000000) 316928SBrad.Beckmann@amd.com pciconfig = PciConfigAll() 326928SBrad.Beckmann@amd.com fake_sm_chip = IsaFake(pio_addr=0x801fc000370) 336928SBrad.Beckmann@amd.com 346166Ssteve.reinhardt@amd.com fake_uart1 = IsaFake(pio_addr=0x801fc0002f8) 356928SBrad.Beckmann@amd.com fake_uart2 = IsaFake(pio_addr=0x801fc0003e8) 366928SBrad.Beckmann@amd.com fake_uart3 = IsaFake(pio_addr=0x801fc0002e8) 376928SBrad.Beckmann@amd.com fake_uart4 = IsaFake(pio_addr=0x801fc0003f0) 386928SBrad.Beckmann@amd.com 396928SBrad.Beckmann@amd.com fake_ppc = IsaFake(pio_addr=0x801fc0003bb) 406928SBrad.Beckmann@amd.com 416928SBrad.Beckmann@amd.com fake_OROM = IsaFake(pio_addr=0x800000a0000, pio_size=0x60000) 426928SBrad.Beckmann@amd.com 436928SBrad.Beckmann@amd.com fake_pnp_addr = IsaFake(pio_addr=0x801fc000279) 446928SBrad.Beckmann@amd.com fake_pnp_write = IsaFake(pio_addr=0x801fc000a79) 456928SBrad.Beckmann@amd.com fake_pnp_read0 = IsaFake(pio_addr=0x801fc000203) 466928SBrad.Beckmann@amd.com fake_pnp_read1 = IsaFake(pio_addr=0x801fc000243) 476928SBrad.Beckmann@amd.com fake_pnp_read2 = IsaFake(pio_addr=0x801fc000283) 486928SBrad.Beckmann@amd.com fake_pnp_read3 = IsaFake(pio_addr=0x801fc0002c3) 496928SBrad.Beckmann@amd.com fake_pnp_read4 = IsaFake(pio_addr=0x801fc000303) 507570SBrad.Beckmann@amd.com fake_pnp_read5 = IsaFake(pio_addr=0x801fc000343) 516928SBrad.Beckmann@amd.com fake_pnp_read6 = IsaFake(pio_addr=0x801fc000383) 527570SBrad.Beckmann@amd.com fake_pnp_read7 = IsaFake(pio_addr=0x801fc0003c3) 536928SBrad.Beckmann@amd.com 546928SBrad.Beckmann@amd.com fake_ata0 = IsaFake(pio_addr=0x801fc0001f0) 556928SBrad.Beckmann@amd.com fake_ata1 = IsaFake(pio_addr=0x801fc000170) 566928SBrad.Beckmann@amd.com 576928SBrad.Beckmann@amd.com fb = BadDevice(pio_addr=0x801fc0003d0, devicename='FrameBuffer') 587570SBrad.Beckmann@amd.com io = TsunamiIO(pio_addr=0x801fc000000) 597570SBrad.Beckmann@amd.com uart = Uart8250(pio_addr=0x801fc0003f8) 607570SBrad.Beckmann@amd.com console = AlphaConsole(pio_addr=0x80200000000, disk=Parent.simple_disk) 617570SBrad.Beckmann@amd.com 627570SBrad.Beckmann@amd.com # Attach I/O devices to specified bus object. Can't do this 637570SBrad.Beckmann@amd.com # earlier, since the bus object itself is typically defined at the 647570SBrad.Beckmann@amd.com # System level. 657570SBrad.Beckmann@amd.com def attachIO(self, bus): 667570SBrad.Beckmann@amd.com self.cchip.pio = bus.port 677570SBrad.Beckmann@amd.com self.pchip.pio = bus.port 687570SBrad.Beckmann@amd.com self.pciconfig.pio = bus.default 697570SBrad.Beckmann@amd.com bus.responder_set = True 707570SBrad.Beckmann@amd.com bus.responder = self.pciconfig 716928SBrad.Beckmann@amd.com self.fake_sm_chip.pio = bus.port 726928SBrad.Beckmann@amd.com self.fake_uart1.pio = bus.port 736289Snate@binkert.org self.fake_uart2.pio = bus.port 746166Ssteve.reinhardt@amd.com self.fake_uart3.pio = bus.port 757570SBrad.Beckmann@amd.com self.fake_uart4.pio = bus.port 766928SBrad.Beckmann@amd.com self.fake_ppc.pio = bus.port 777570SBrad.Beckmann@amd.com self.fake_OROM.pio = bus.port 786928SBrad.Beckmann@amd.com self.fake_pnp_addr.pio = bus.port 796928SBrad.Beckmann@amd.com self.fake_pnp_write.pio = bus.port 806928SBrad.Beckmann@amd.com self.fake_pnp_read0.pio = bus.port 816928SBrad.Beckmann@amd.com self.fake_pnp_read1.pio = bus.port 826928SBrad.Beckmann@amd.com self.fake_pnp_read2.pio = bus.port 836928SBrad.Beckmann@amd.com self.fake_pnp_read3.pio = bus.port 846928SBrad.Beckmann@amd.com self.fake_pnp_read4.pio = bus.port 856928SBrad.Beckmann@amd.com self.fake_pnp_read5.pio = bus.port 866928SBrad.Beckmann@amd.com self.fake_pnp_read6.pio = bus.port 876928SBrad.Beckmann@amd.com self.fake_pnp_read7.pio = bus.port 886928SBrad.Beckmann@amd.com self.fake_ata0.pio = bus.port 896928SBrad.Beckmann@amd.com self.fake_ata1.pio = bus.port 906928SBrad.Beckmann@amd.com self.fb.pio = bus.port 916166Ssteve.reinhardt@amd.com self.io.pio = bus.port 926166Ssteve.reinhardt@amd.com self.uart.pio = bus.port 936928SBrad.Beckmann@amd.com self.console.pio = bus.port 946928SBrad.Beckmann@amd.com