From 904872a01a81ef5ee3f20e42c0657e35a491d6c9 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Fri, 24 Jan 2014 15:29:30 -0600 Subject: mem: Remove explict cast from memhelper. Previously we were casting the result type to the the memory type which is incorrect for things like dual-memory operations which still return a single result. --- src/arch/generic/memhelpers.hh | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'src/arch/generic') diff --git a/src/arch/generic/memhelpers.hh b/src/arch/generic/memhelpers.hh index f7bbfa269..7ed6141d0 100644 --- a/src/arch/generic/memhelpers.hh +++ b/src/arch/generic/memhelpers.hh @@ -1,4 +1,16 @@ /* + * Copyright (c) 2013 ARM Limited + * All rights reserved + * + * The license below extends only to copyright in the software and shall + * not be construed as granting a license to any other intellectual + * property including but not limited to intellectual property relating + * to a hardware implementation of the functionality of the software + * licensed hereunder. You may use the software subject to the license + * terms below provided that you ensure that this notice is replicated + * unmodified and in its entirety in all distributions of the software, + * modified or unmodified, in source code or in binary form. + * * Copyright (c) 2011 Google * All rights reserved. * @@ -32,6 +44,7 @@ #define __ARCH_GENERIC_MEMHELPERS_HH__ #include "base/types.hh" +#include "mem/request.hh" #include "sim/byteswap.hh" #include "sim/fault_fwd.hh" #include "sim/insttracer.hh" @@ -92,7 +105,10 @@ writeMemAtomic(XC *xc, Trace::InstRecord *traceData, const MemT &mem, { Fault fault = writeMemTiming(xc, traceData, mem, addr, flags, res); if (fault == NoFault && res != NULL) { - *res = TheISA::gtoh((MemT)*res); + if (flags & Request::MEM_SWAP || flags & Request::MEM_SWAP_COND) + *res = TheISA::gtoh((MemT)*res); + else + *res = TheISA::gtoh(*res); } return fault; } -- cgit v1.2.3