From: Eric Van Hensbergen Date: Sun, 23 Mar 2014 15:11:34 +0000 (-0400) Subject: arm: m5ops readfile64 args broken, offset coming through garbage X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=7630168a755122993072090cbd1d52a8dcaf1509;p=gem5.git 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. --- 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,