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