From 4b63d5e7a87b3d7b30d41348c5edda3a02f5268c Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 25 Sep 2020 00:56:24 -0700 Subject: [PATCH] mem: When loading an image directly in memory, use the right CL size. Some code was added fairly recently which would load a memory image into a memory directly in order to make it easier to set up ROMs. Unfortunately, that code accidentally used the image size instead of the cache line size when setting up the port proxy which would actually write the data. This happens to work when the image size is a power of two since that's all the proxy checks for, but there's no guarantee that every image will be sized that way. This change instead looks into the system object, retrieves the cache line size from it, and uses that to set up the port proxy. Change-Id: I227ac475b855d9516e1feb881769e12ec4e7d598 Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/35155 Reviewed-by: Jason Lowe-Power Maintainer: Jason Lowe-Power Tested-by: kokoro --- src/mem/abstract_mem.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mem/abstract_mem.cc b/src/mem/abstract_mem.cc index a5730c78d..2de77e9ec 100644 --- a/src/mem/abstract_mem.cc +++ b/src/mem/abstract_mem.cc @@ -93,7 +93,8 @@ AbstractMemory::initState() panic_if(!image_range.isSubset(range), "%s: memory image %s doesn't fit.", name(), file); - PortProxy proxy([this](PacketPtr pkt) { functionalAccess(pkt); }, size()); + PortProxy proxy([this](PacketPtr pkt) { functionalAccess(pkt); }, + system()->cacheLineSize()); panic_if(!image.write(proxy), "%s: Unable to write image."); } -- 2.30.2