diff options
author | Ali Saidi <Ali.Saidi@ARM.com> | 2014-10-29 23:18:24 -0500 |
---|---|---|
committer | Ali Saidi <Ali.Saidi@ARM.com> | 2014-10-29 23:18:24 -0500 |
commit | e3ee27c7b4da421676ca7d77c0953726259890d5 (patch) | |
tree | a36f52443ad80472311fec592d76f7ed23b9615b | |
parent | 536c72333f71f6e816d4b5e95e39754638bd76ea (diff) | |
download | gem5-e3ee27c7b4da421676ca7d77c0953726259890d5.tar.xz |
cpu: Add support to checker for CACHE_BLOCK_ZERO commands.
The checker didn't know how to properly validate these new commands.
-rw-r--r-- | src/cpu/checker/cpu.cc | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/src/cpu/checker/cpu.cc b/src/cpu/checker/cpu.cc index 61c127ec4..f91bad294 100644 --- a/src/cpu/checker/cpu.cc +++ b/src/cpu/checker/cpu.cc @@ -231,6 +231,7 @@ CheckerCPU::writeMem(uint8_t *data, unsigned size, bool checked_flags = false; bool flags_match = true; Addr pAddr = 0x0; + static uint8_t zero_data[64] = {}; int fullSize = size; @@ -304,6 +305,15 @@ CheckerCPU::writeMem(uint8_t *data, unsigned size, unverifiedReq->getExtraData() : true; } + // If the request is to ZERO a cache block, there is no data to check + // against, but it's all zero. We need something to compare to, so use a + // const set of zeros. + if (flags & Request::CACHE_BLOCK_ZERO) { + assert(!data); + assert(sizeof(zero_data) <= fullSize); + data = zero_data; + } + if (unverifiedReq && unverifiedMemData && memcmp(data, unverifiedMemData, fullSize) && extraData) { warn("%lli: Store value does not match value sent to memory! " |