diff options
author | Eric Van Hensbergen <eric.vanhensbergen@arm.com> | 2014-03-23 11:11:34 -0400 |
---|---|---|
committer | Eric Van Hensbergen <eric.vanhensbergen@arm.com> | 2014-03-23 11:11:34 -0400 |
commit | 7630168a755122993072090cbd1d52a8dcaf1509 (patch) | |
tree | 6ea0fecc5560321e06979bd75ca13831e0b7ff2e /src/arch/arm/isa | |
parent | 5093e58dc2576c93275c22058d1dd52abcda6467 (diff) | |
download | gem5-7630168a755122993072090cbd1d52a8dcaf1509.tar.xz |
arm: m5ops readfile64 args broken, offset coming through garbage
There were several sections of the m5ops code which were
essentially copy/pasted versions of the 32-bit code. The
problem is that some of these didn't account fo4 64-bit
registers leading to arguments being in the wrong registers.
This patch addresses the args for readfile64, writefile64,
and addsymbol64 -- all of which seemed to suffer from a
similar set of problems when moving to 64-bit.
Diffstat (limited to 'src/arch/arm/isa')
-rw-r--r-- | src/arch/arm/isa/insts/m5ops.isa | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/arch/arm/isa/insts/m5ops.isa b/src/arch/arm/isa/insts/m5ops.isa index 928d1be0d..e18d0682c 100644 --- a/src/arch/arm/isa/insts/m5ops.isa +++ b/src/arch/arm/isa/insts/m5ops.isa @@ -403,10 +403,10 @@ let {{ ''' m5readfileCode64 = ''' - int n = 4; + int n = 2; uint64_t offset = getArgument(xc->tcBase(), n, sizeof(uint64_t), false); - n = 6; - X0 = PseudoInst::readfile(xc->tcBase(), (uint32_t)X0, X1, offset); + n = 3; + X0 = PseudoInst::readfile(xc->tcBase(), X0, X1, offset); ''' m5readfileIop = InstObjParams("m5readfile", "M5readfile", "PredOp", @@ -435,11 +435,11 @@ let {{ ''' m5writefileCode64 = ''' - int n = 4; + int n = 2; uint64_t offset = getArgument(xc->tcBase(), n, sizeof(uint64_t), false); - n = 6; + n = 3; Addr filenameAddr = getArgument(xc->tcBase(), n, sizeof(Addr), false); - X0 = PseudoInst::writefile(xc->tcBase(), (uint32_t)X0, X1, offset, + X0 = PseudoInst::writefile(xc->tcBase(), X0, X1, offset, filenameAddr); ''' @@ -479,7 +479,7 @@ let {{ PseudoInst::addsymbol(xc->tcBase(), join32to64(R1, R0), R2); ''' m5addsymbolCode64 = ''' - PseudoInst::addsymbol(xc->tcBase(), X0, (uint32_t)X1); + PseudoInst::addsymbol(xc->tcBase(), X0, X1); ''' m5addsymbolIop = InstObjParams("m5addsymbol", "M5addsymbol", "PredOp", { "code": m5addsymbolCode, |