1 # Copyright (c) 2007 The Regents of The University of Michigan
4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are
6 # met: redistributions of source code must retain the above copyright
7 # notice, this list of conditions and the following disclaimer;
8 # redistributions in binary form must reproduce the above copyright
9 # notice, this list of conditions and the following disclaimer in the
10 # documentation and/or other materials provided with the distribution;
11 # neither the name of the copyright holders nor the names of its
12 # contributors may be used to endorse or promote products derived from
13 # this software without specific prior written permission.
15 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
18 # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
19 # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
20 # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
21 # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25 # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 # Authors: Nathan Binkert
29 from m5
.params
import *
31 from PhysicalMemory
import *
32 from System
import System
34 class SparcSystem(System
):
36 _rom_base
= 0xfff0000000
37 _nvram_base
= 0x1f11000000
38 _hypervisor_desc_base
= 0x1f12080000
39 _partition_desc_base
= 0x1f12000000
40 # ROM for OBP/Reset/Hypervisor
41 rom
= Param
.PhysicalMemory(
42 PhysicalMemory(range=AddrRange(_rom_base
, size
='8MB')),
43 "Memory to hold the ROM data")
45 nvram
= Param
.PhysicalMemory(
46 PhysicalMemory(range=AddrRange(_nvram_base
, size
='8kB')),
47 "Memory to hold the nvram data")
48 # hypervisor description
49 hypervisor_desc
= Param
.PhysicalMemory(
50 PhysicalMemory(range=AddrRange(_hypervisor_desc_base
, size
='8kB')),
51 "Memory to hold the hypervisor description")
52 # partition description
53 partition_desc
= Param
.PhysicalMemory(
54 PhysicalMemory(range=AddrRange(_partition_desc_base
, size
='8kB')),
55 "Memory to hold the partition description")
57 reset_addr
= Param
.Addr(_rom_base
, "Address to load ROM at")
58 hypervisor_addr
= Param
.Addr(Addr('64kB') + _rom_base
,
59 "Address to load hypervisor at")
60 openboot_addr
= Param
.Addr(Addr('512kB') + _rom_base
,
61 "Address to load openboot at")
62 nvram_addr
= Param
.Addr(_nvram_base
, "Address to put the nvram")
63 hypervisor_desc_addr
= Param
.Addr(_hypervisor_desc_base
,
64 "Address for the hypervisor description")
65 partition_desc_addr
= Param
.Addr(_partition_desc_base
,
66 "Address for the partition description")
68 reset_bin
= Param
.String("file that contains the reset code")
69 hypervisor_bin
= Param
.String("file that contains the hypervisor code")
70 openboot_bin
= Param
.String("file that contains the openboot code")
71 nvram_bin
= Param
.String("file that contains the contents of nvram")
72 hypervisor_desc_bin
= Param
.String("file that contains the hypervisor description")
73 partition_desc_bin
= Param
.String("file that contains the partition description")
74 load_addr_mask
= 0xffffffffff