From 91b737ed48008ed295db22c857183f040a63234c Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Thu, 1 Mar 2012 17:26:31 -0600 Subject: ARM: Add support for Versatile Express extended memory map Also clean up how we create boot loader memory a bit. --- src/arch/arm/ArmSystem.py | 4 +++- src/arch/arm/isa.cc | 3 +-- src/arch/arm/linux/system.cc | 4 ++-- src/arch/arm/linux/system.hh | 3 --- 4 files changed, 6 insertions(+), 8 deletions(-) (limited to 'src/arch') 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("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; -- cgit v1.2.3