T1000.py revision 8847
112027Sjungma@eit.uni-kl.de# Copyright (c) 2006-2007 The Regents of The University of Michigan 212027Sjungma@eit.uni-kl.de# All rights reserved. 312027Sjungma@eit.uni-kl.de# 412027Sjungma@eit.uni-kl.de# Redistribution and use in source and binary forms, with or without 512027Sjungma@eit.uni-kl.de# modification, are permitted provided that the following conditions are 612027Sjungma@eit.uni-kl.de# met: redistributions of source code must retain the above copyright 712027Sjungma@eit.uni-kl.de# notice, this list of conditions and the following disclaimer; 812027Sjungma@eit.uni-kl.de# redistributions in binary form must reproduce the above copyright 912027Sjungma@eit.uni-kl.de# notice, this list of conditions and the following disclaimer in the 1012027Sjungma@eit.uni-kl.de# documentation and/or other materials provided with the distribution; 1112027Sjungma@eit.uni-kl.de# neither the name of the copyright holders nor the names of its 1212027Sjungma@eit.uni-kl.de# contributors may be used to endorse or promote products derived from 1312027Sjungma@eit.uni-kl.de# this software without specific prior written permission. 1412027Sjungma@eit.uni-kl.de# 1512027Sjungma@eit.uni-kl.de# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1612027Sjungma@eit.uni-kl.de# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1712027Sjungma@eit.uni-kl.de# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1812027Sjungma@eit.uni-kl.de# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1912027Sjungma@eit.uni-kl.de# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2012027Sjungma@eit.uni-kl.de# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2112027Sjungma@eit.uni-kl.de# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2212027Sjungma@eit.uni-kl.de# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2312027Sjungma@eit.uni-kl.de# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2412027Sjungma@eit.uni-kl.de# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2512027Sjungma@eit.uni-kl.de# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2612027Sjungma@eit.uni-kl.de# 2712027Sjungma@eit.uni-kl.de# Authors: Gabe Black 2812027Sjungma@eit.uni-kl.de 2912027Sjungma@eit.uni-kl.defrom m5.params import * 3012027Sjungma@eit.uni-kl.defrom m5.proxy import * 3112027Sjungma@eit.uni-kl.defrom Device import BasicPioDevice, PioDevice, IsaFake, BadAddr 3212027Sjungma@eit.uni-kl.defrom Platform import Platform 3312027Sjungma@eit.uni-kl.defrom Terminal import Terminal 3412027Sjungma@eit.uni-kl.defrom Uart import Uart8250 3512027Sjungma@eit.uni-kl.de 3612027Sjungma@eit.uni-kl.de 3712027Sjungma@eit.uni-kl.declass MmDisk(BasicPioDevice): 3812027Sjungma@eit.uni-kl.de type = 'MmDisk' 3912027Sjungma@eit.uni-kl.de image = Param.DiskImage("Disk Image") 4012027Sjungma@eit.uni-kl.de pio_addr = 0x1F40000000 4112027Sjungma@eit.uni-kl.de 4212027Sjungma@eit.uni-kl.declass DumbTOD(BasicPioDevice): 4312027Sjungma@eit.uni-kl.de type = 'DumbTOD' 4412027Sjungma@eit.uni-kl.de time = Param.Time('01/01/2009', "System time to use ('Now' for real time)") 4512027Sjungma@eit.uni-kl.de pio_addr = 0xfff0c1fff8 4612027Sjungma@eit.uni-kl.de 4712027Sjungma@eit.uni-kl.declass Iob(PioDevice): 4812027Sjungma@eit.uni-kl.de type = 'Iob' 4912027Sjungma@eit.uni-kl.de platform = Param.Platform(Parent.any, "Platform this device is part of.") 5012027Sjungma@eit.uni-kl.de pio_latency = Param.Latency('1ns', "Programed IO latency in simticks") 5112027Sjungma@eit.uni-kl.de 5212027Sjungma@eit.uni-kl.de 5312027Sjungma@eit.uni-kl.declass T1000(Platform): 5412027Sjungma@eit.uni-kl.de type = 'T1000' 5512027Sjungma@eit.uni-kl.de system = Param.System(Parent.any, "system") 5612027Sjungma@eit.uni-kl.de 5712027Sjungma@eit.uni-kl.de fake_clk = IsaFake(pio_addr=0x9600000000, pio_size=0x100000000) 5812027Sjungma@eit.uni-kl.de #warn_access="Accessing Clock Unit -- Unimplemented!") 5912027Sjungma@eit.uni-kl.de 6012027Sjungma@eit.uni-kl.de fake_membnks = IsaFake(pio_addr=0x9700000000, pio_size=16384, 6112027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000000, update_data=False) 6212027Sjungma@eit.uni-kl.de #warn_access="Accessing Memory Banks -- Unimplemented!") 6312027Sjungma@eit.uni-kl.de 6412027Sjungma@eit.uni-kl.de fake_jbi = IsaFake(pio_addr=0x8000000000, pio_size=0x100000000) 6512027Sjungma@eit.uni-kl.de #warn_access="Accessing JBI -- Unimplemented!") 6612027Sjungma@eit.uni-kl.de 6712027Sjungma@eit.uni-kl.de fake_l2_1 = IsaFake(pio_addr=0xA900000000, pio_size=0x8, 6812027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000001, update_data=True) 6912027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 Cache Banks -- Unimplemented!") 7012027Sjungma@eit.uni-kl.de 7112027Sjungma@eit.uni-kl.de fake_l2_2 = IsaFake(pio_addr=0xA900000040, pio_size=0x8, 7212027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000001, update_data=True) 7312027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 Cache Banks -- Unimplemented!") 7412027Sjungma@eit.uni-kl.de 7512027Sjungma@eit.uni-kl.de fake_l2_3 = IsaFake(pio_addr=0xA900000080, pio_size=0x8, 7612027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000001, update_data=True) 7712027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 Cache Banks -- Unimplemented!") 7812027Sjungma@eit.uni-kl.de 7912027Sjungma@eit.uni-kl.de fake_l2_4 = IsaFake(pio_addr=0xA9000000C0, pio_size=0x8, 8012027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000001, update_data=True) 8112027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 Cache Banks -- Unimplemented!") 8212027Sjungma@eit.uni-kl.de 8312027Sjungma@eit.uni-kl.de fake_l2esr_1 = IsaFake(pio_addr=0xAB00000000, pio_size=0x8, 8412027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000000, update_data=True) 8512027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 ESR Cache Banks -- Unimplemented!") 8612027Sjungma@eit.uni-kl.de 8712027Sjungma@eit.uni-kl.de fake_l2esr_2 = IsaFake(pio_addr=0xAB00000040, pio_size=0x8, 8812027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000000, update_data=True) 8912027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 ESR Cache Banks -- Unimplemented!") 9012027Sjungma@eit.uni-kl.de 9112027Sjungma@eit.uni-kl.de fake_l2esr_3 = IsaFake(pio_addr=0xAB00000080, pio_size=0x8, 9212027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000000, update_data=True) 9312027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 ESR Cache Banks -- Unimplemented!") 9412027Sjungma@eit.uni-kl.de 9512027Sjungma@eit.uni-kl.de fake_l2esr_4 = IsaFake(pio_addr=0xAB000000C0, pio_size=0x8, 9612027Sjungma@eit.uni-kl.de ret_data64=0x0000000000000000, update_data=True) 9712027Sjungma@eit.uni-kl.de #warn_access="Accessing L2 ESR Cache Banks -- Unimplemented!") 9812027Sjungma@eit.uni-kl.de 9912027Sjungma@eit.uni-kl.de fake_ssi = IsaFake(pio_addr=0xff00000000, pio_size=0x10000000) 10012027Sjungma@eit.uni-kl.de #warn_access="Accessing SSI -- Unimplemented!") 10112027Sjungma@eit.uni-kl.de 10212027Sjungma@eit.uni-kl.de hterm = Terminal() 10312027Sjungma@eit.uni-kl.de hvuart = Uart8250(pio_addr=0xfff0c2c000) 10412027Sjungma@eit.uni-kl.de htod = DumbTOD() 10512027Sjungma@eit.uni-kl.de 10612027Sjungma@eit.uni-kl.de pterm = Terminal() 10712027Sjungma@eit.uni-kl.de puart0 = Uart8250(pio_addr=0x1f10000000) 10812027Sjungma@eit.uni-kl.de 10912027Sjungma@eit.uni-kl.de iob = Iob() 11012027Sjungma@eit.uni-kl.de # Attach I/O devices that are on chip 11112027Sjungma@eit.uni-kl.de def attachOnChipIO(self, bus): 11212027Sjungma@eit.uni-kl.de self.iob.pio = bus.master 11312027Sjungma@eit.uni-kl.de self.htod.pio = bus.master 11412027Sjungma@eit.uni-kl.de 11512027Sjungma@eit.uni-kl.de 11612027Sjungma@eit.uni-kl.de # Attach I/O devices to specified bus object. Can't do this 11712027Sjungma@eit.uni-kl.de # earlier, since the bus object itself is typically defined at the 11812027Sjungma@eit.uni-kl.de # System level. 11912027Sjungma@eit.uni-kl.de def attachIO(self, bus): 12012027Sjungma@eit.uni-kl.de self.hvuart.terminal = self.hterm 12112027Sjungma@eit.uni-kl.de self.puart0.terminal = self.pterm 12212027Sjungma@eit.uni-kl.de self.fake_clk.pio = bus.master 12312027Sjungma@eit.uni-kl.de self.fake_membnks.pio = bus.master 12412027Sjungma@eit.uni-kl.de self.fake_l2_1.pio = bus.master 12512027Sjungma@eit.uni-kl.de self.fake_l2_2.pio = bus.master 12612027Sjungma@eit.uni-kl.de self.fake_l2_3.pio = bus.master 12712027Sjungma@eit.uni-kl.de self.fake_l2_4.pio = bus.master 12812027Sjungma@eit.uni-kl.de self.fake_l2esr_1.pio = bus.master 12912027Sjungma@eit.uni-kl.de self.fake_l2esr_2.pio = bus.master 13012027Sjungma@eit.uni-kl.de self.fake_l2esr_3.pio = bus.master 13112027Sjungma@eit.uni-kl.de self.fake_l2esr_4.pio = bus.master 13212027Sjungma@eit.uni-kl.de self.fake_ssi.pio = bus.master 13312027Sjungma@eit.uni-kl.de self.fake_jbi.pio = bus.master 13412027Sjungma@eit.uni-kl.de self.puart0.pio = bus.master 13512027Sjungma@eit.uni-kl.de self.hvuart.pio = bus.master 13612027Sjungma@eit.uni-kl.de