summaryrefslogtreecommitdiff
path: root/src/arch/mips
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@arm.com>2010-08-23 11:18:39 -0500
committerAli Saidi <Ali.Saidi@arm.com>2010-08-23 11:18:39 -0500
commitf2642e205549efefb7391de32b189e94e5503ddc (patch)
treea3572aa1e56a3d76012cccb7cd3b679e197c1e8f /src/arch/mips
parentd4e83a400189ef91a5b0f444c9c99d443cc1a251 (diff)
downloadgem5-f2642e205549efefb7391de32b189e94e5503ddc.tar.xz
Loader: Make the load address mask be a parameter of the system rather than a constant.
This allows one two different OS requirements for the same ISA to be handled. Some OSes are compiled for a virtual address and need to be loaded into physical memory that starts at address 0, while other bare metal tools generate images that start at address 0.
Diffstat (limited to 'src/arch/mips')
-rw-r--r--src/arch/mips/MipsSystem.py1
-rw-r--r--src/arch/mips/isa_traits.hh3
-rwxr-xr-xsrc/arch/mips/system.cc2
3 files changed, 2 insertions, 4 deletions
diff --git a/src/arch/mips/MipsSystem.py b/src/arch/mips/MipsSystem.py
index d271bd387..fc4f1efa3 100644
--- a/src/arch/mips/MipsSystem.py
+++ b/src/arch/mips/MipsSystem.py
@@ -41,6 +41,7 @@ class MipsSystem(System):
hex_file_name = Param.String("test.hex","hex file that contains [address,data] pairs")
system_type = Param.UInt64("Type of system we are emulating")
system_rev = Param.UInt64("Revision of system we are emulating")
+ load_addr_mask = 0xffffffffff
if buildEnv['FULL_SYSTEM']:
class LinuxMipsSystem(MipsSystem):
diff --git a/src/arch/mips/isa_traits.hh b/src/arch/mips/isa_traits.hh
index aa64be71d..efb1fb594 100644
--- a/src/arch/mips/isa_traits.hh
+++ b/src/arch/mips/isa_traits.hh
@@ -95,9 +95,6 @@ const Addr KSeg3End = ULL(0xFFFFFFFF);
const Addr KSeg3Base = ULL(0xE0000000);
-// For loading... XXX This maybe could be USegEnd?? --ali
-const Addr LoadAddrMask = ULL(0xffffffffff);
-
inline Addr Phys2K0Seg(Addr addr)
{
return addr | KSeg0Base;
diff --git a/src/arch/mips/system.cc b/src/arch/mips/system.cc
index 325d78c83..d11d473e3 100755
--- a/src/arch/mips/system.cc
+++ b/src/arch/mips/system.cc
@@ -70,7 +70,7 @@ MipsSystem::MipsSystem(Params *p) : System(p)
if (console == NULL)
fatal("Could not load console file %s", params()->console);
//Load program sections into memory
- console->loadSections(&functionalPort, MipsISA::LoadAddrMask);
+ console->loadSections(&functionalPort, loadAddrMask);
//load symbols
if (!console->loadGlobalSymbols(consoleSymtab))