summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChander Sudanthi <Chander.Sudanthi@arm.com>2013-01-07 13:05:39 -0500
committerChander Sudanthi <Chander.Sudanthi@arm.com>2013-01-07 13:05:39 -0500
commit694a81e9942724544024266378604fb7d6b3dd40 (patch)
tree2302dbe89e961c1648a7802b67b243640f05d4ab
parentc3551e82f7087a0c0398ef037c979e0cc24d51ca (diff)
downloadgem5-694a81e9942724544024266378604fb7d6b3dd40.tar.xz
ARM: pl111/LCD framebuffer checkpointing fix
Fixed check pointing of the framebuffer. Previously, the pixel size was not considered in determining the size of the buffer to checkpoint. This patch checkpoints the entire framebuffer instead of the first quarter.
-rw-r--r--src/dev/arm/pl111.cc5
-rw-r--r--src/dev/arm/pl111.hh2
2 files changed, 4 insertions, 3 deletions
diff --git a/src/dev/arm/pl111.cc b/src/dev/arm/pl111.cc
index cd1f00272..acb3b7dd8 100644
--- a/src/dev/arm/pl111.cc
+++ b/src/dev/arm/pl111.cc
@@ -76,7 +76,6 @@ Pl111::Pl111(const Params *p)
pic = simout.create(csprintf("%s.framebuffer.bmp", sys->name()), true);
- const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
dmaBuffer = new uint8_t[buffer_size];
memset(lcdPalette, 0, sizeof(lcdPalette));
@@ -581,7 +580,7 @@ Pl111::serialize(std::ostream &os)
SERIALIZE_SCALAR(width);
SERIALIZE_SCALAR(bytesPerPixel);
- SERIALIZE_ARRAY(dmaBuffer, height * width);
+ SERIALIZE_ARRAY(dmaBuffer, buffer_size);
SERIALIZE_SCALAR(startTime);
SERIALIZE_SCALAR(startAddr);
SERIALIZE_SCALAR(maxAddr);
@@ -683,7 +682,7 @@ Pl111::unserialize(Checkpoint *cp, const std::string &section)
UNSERIALIZE_SCALAR(width);
UNSERIALIZE_SCALAR(bytesPerPixel);
- UNSERIALIZE_ARRAY(dmaBuffer, height * width);
+ UNSERIALIZE_ARRAY(dmaBuffer, buffer_size);
UNSERIALIZE_SCALAR(startTime);
UNSERIALIZE_SCALAR(startAddr);
UNSERIALIZE_SCALAR(maxAddr);
diff --git a/src/dev/arm/pl111.hh b/src/dev/arm/pl111.hh
index 2245d8124..855fb8bef 100644
--- a/src/dev/arm/pl111.hh
+++ b/src/dev/arm/pl111.hh
@@ -96,6 +96,8 @@ class Pl111: public AmbaDmaDevice
static const int dmaSize = 8; // 64 bits
static const int maxOutstandingDma = 16; // 16 deep FIFO of 64 bits
+ static const int buffer_size = LcdMaxWidth * LcdMaxHeight * sizeof(uint32_t);
+
enum LcdMode {
bpp1 = 0,
bpp2,