summaryrefslogtreecommitdiff
path: root/src/arch/arm
diff options
context:
space:
mode:
authorAli Saidi <Ali.Saidi@ARM.com>2012-03-01 17:26:31 -0600
committerAli Saidi <Ali.Saidi@ARM.com>2012-03-01 17:26:31 -0600
commit91b737ed48008ed295db22c857183f040a63234c (patch)
tree03e4be02cd6846b632045b520ad7d9a588974bc9 /src/arch/arm
parent3876105bdb5589360c58389ffffff9786a93a2ff (diff)
downloadgem5-91b737ed48008ed295db22c857183f040a63234c.tar.xz
ARM: Add support for Versatile Express extended memory map
Also clean up how we create boot loader memory a bit.
Diffstat (limited to 'src/arch/arm')
-rw-r--r--src/arch/arm/ArmSystem.py4
-rw-r--r--src/arch/arm/isa.cc3
-rw-r--r--src/arch/arm/linux/system.cc4
-rw-r--r--src/arch/arm/linux/system.hh3
4 files changed, 6 insertions, 8 deletions
diff --git a/src/arch/arm/ArmSystem.py b/src/arch/arm/ArmSystem.py
index a603567d3..e744c026c 100644
--- a/src/arch/arm/ArmSystem.py
+++ b/src/arch/arm/ArmSystem.py
@@ -43,7 +43,8 @@ class ArmMachineType(Enum):
map = {'RealView_EB' : 827,
'RealView_PBX' : 1901,
'VExpress_ELT' : 2272,
- 'VExpress_CA9' : 2272}
+ 'VExpress_CA9' : 2272,
+ 'VExpress_EMM' : 2272}
class ArmSystem(System):
type = 'ArmSystem'
@@ -65,5 +66,6 @@ class LinuxArmSystem(ArmSystem):
load_addr_mask = 0x0fffffff
machine_type = Param.ArmMachineType('RealView_PBX',
"Machine id from http://www.arm.linux.org.uk/developer/machines/")
+ atags_addr = Param.Addr(0x100, "Address where default atags structure should be written")
diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc
index b79b9346f..9d76ca60e 100644
--- a/src/arch/arm/isa.cc
+++ b/src/arch/arm/isa.cc
@@ -213,8 +213,7 @@ ISA::readMiscReg(int misc_reg, ThreadContext *tc)
"config registers and jumping to ThumbEE vectors\n");
return 0x0031; // !ThumbEE | !Jazelle | Thumb | ARM
case MISCREG_ID_PFR1:
- warn("reading unimplmented register ID_PFR1");
- return 0;
+ return 0x00001; // !Timer | !Virti | !M Profile | !TrustZone | ARMv4
case MISCREG_CTR:
return 0x86468006; // V7, 64 byte cache line, load/exclusive is exact
case MISCREG_ACTLR:
diff --git a/src/arch/arm/linux/system.cc b/src/arch/arm/linux/system.cc
index a2d0c156c..4e18a265d 100644
--- a/src/arch/arm/linux/system.cc
+++ b/src/arch/arm/linux/system.cc
@@ -114,7 +114,7 @@ LinuxArmSystem::initState()
DPRINTF(Loader, "Boot atags was %d bytes in total\n", size << 2);
DDUMP(Loader, boot_data, size << 2);
- physProxy.writeBlob(ParamsList, boot_data, size << 2);
+ physProxy.writeBlob(params()->atags_addr, boot_data, size << 2);
#ifndef NDEBUG
kernelPanicEvent = addKernelFuncEvent<BreakPCEvent>("panic");
@@ -154,7 +154,7 @@ LinuxArmSystem::initState()
for (int i = 0; i < threadContexts.size(); i++) {
threadContexts[i]->setIntReg(0, 0);
threadContexts[i]->setIntReg(1, params()->machine_type);
- threadContexts[i]->setIntReg(2, ParamsList);
+ threadContexts[i]->setIntReg(2, params()->atags_addr);
}
}
diff --git a/src/arch/arm/linux/system.hh b/src/arch/arm/linux/system.hh
index 54681096b..caf018cb9 100644
--- a/src/arch/arm/linux/system.hh
+++ b/src/arch/arm/linux/system.hh
@@ -52,9 +52,6 @@
class LinuxArmSystem : public ArmSystem
{
- protected:
- static const int ParamsList = 0x100;
-
public:
/** Boilerplate params code */
typedef LinuxArmSystemParams Params;