summaryrefslogtreecommitdiff
path: root/src/dev/arm
diff options
context:
space:
mode:
authorChander Sudanthi <chander.sudanthi@arm.com>2011-05-13 17:27:00 -0500
committerChander Sudanthi <chander.sudanthi@arm.com>2011-05-13 17:27:00 -0500
commit5299c75e62832aab2e200b22c73865ed9c51b335 (patch)
treed439efab806ba35c1bc8cfee0b0a01656a5d513a /src/dev/arm
parentb79650ceaaabb87f9bfe145663e2bfa3281ed7df (diff)
downloadgem5-5299c75e62832aab2e200b22c73865ed9c51b335.tar.xz
ARM: Better RealView/Versatile EB platform support.
Add registers and components to better support the VersatileEB board. Made the MIDR and SYS_ID register parameters to ArmSystem and RealviewCtrl respectively.
Diffstat (limited to 'src/dev/arm')
-rw-r--r--src/dev/arm/RealView.py9
-rw-r--r--src/dev/arm/rv_ctrl.cc9
2 files changed, 14 insertions, 4 deletions
diff --git a/src/dev/arm/RealView.py b/src/dev/arm/RealView.py
index f913dc94b..e7cba9106 100644
--- a/src/dev/arm/RealView.py
+++ b/src/dev/arm/RealView.py
@@ -75,7 +75,8 @@ class A9SCU(BasicPioDevice):
class RealViewCtrl(BasicPioDevice):
type = 'RealViewCtrl'
- proc_id = Param.UInt32(0x0C000000, "Platform ID")
+ proc_id = Param.UInt32(0x0C000000, "Processor ID, SYS_PROCID")
+ idreg = Param.UInt32(0x00000000, "ID Register, SYS_ID")
class Gic(PioDevice):
type = 'Gic'
@@ -145,7 +146,7 @@ class RealViewPBX(RealView):
l2x0_fake = IsaFake(pio_addr=0x1f002000, pio_size=0xfff)
- flash_fake = IsaFake(pio_addr=0x40000000, pio_size=0x4000000)
+ flash_fake = IsaFake(pio_addr=0x40000000, pio_size=0x20000000)
dmac_fake = AmbaFake(pio_addr=0x10030000)
uart1_fake = AmbaFake(pio_addr=0x1000a000)
uart2_fake = AmbaFake(pio_addr=0x1000b000)
@@ -212,10 +213,12 @@ class RealViewEB(RealView):
kmi1 = Pl050(pio_addr=0x10007000, int_num=21, is_mouse=True)
l2x0_fake = IsaFake(pio_addr=0x1f002000, pio_size=0xfff, warn_access="1")
+ flash_fake = IsaFake(pio_addr=0x40000000, pio_size=0x20000000-1)
dmac_fake = AmbaFake(pio_addr=0x10030000)
uart1_fake = AmbaFake(pio_addr=0x1000a000)
uart2_fake = AmbaFake(pio_addr=0x1000b000)
uart3_fake = AmbaFake(pio_addr=0x1000c000)
+ smcreg_fake = IsaFake(pio_addr=0x10080000, pio_size=0x10000-1)
smc_fake = AmbaFake(pio_addr=0x100e1000)
sp810_fake = AmbaFake(pio_addr=0x10001000, ignore_access=True)
watchdog_fake = AmbaFake(pio_addr=0x10010000)
@@ -261,4 +264,6 @@ class RealViewEB(RealView):
self.aaci_fake.pio = bus.port
self.mmc_fake.pio = bus.port
self.rtc_fake.pio = bus.port
+ self.flash_fake.pio = bus.port
+ self.smcreg_fake.pio = bus.port
diff --git a/src/dev/arm/rv_ctrl.cc b/src/dev/arm/rv_ctrl.cc
index e24fea737..9c546036a 100644
--- a/src/dev/arm/rv_ctrl.cc
+++ b/src/dev/arm/rv_ctrl.cc
@@ -97,8 +97,12 @@ RealViewCtrl::read(PacketPtr pkt)
case Flags:
pkt->set<uint32_t>(flags);
break;
+ case IdReg:
+ pkt->set<uint32_t>(params()->idreg);
+ break;
default:
- panic("Tried to read RealView I/O at offset %#x that doesn't exist\n", daddr);
+ warn("Tried to read RealView I/O at offset %#x that doesn't exist\n",
+ daddr);
break;
}
pkt->makeAtomicResponse();
@@ -128,7 +132,8 @@ RealViewCtrl::write(PacketPtr pkt)
flags = pkt->get<uint32_t>();
break;
default:
- panic("Tried to write RVIO at offset %#x that doesn't exist\n", daddr);
+ warn("Tried to write RVIO at offset %#x that doesn't exist\n",
+ daddr);
break;
}
pkt->makeAtomicResponse();