arch-arm: Instruction size methods in StaticInst class

This patch is introducing some methods in StaticInst so that is possible
to get the instruction size in byte of the instruction (can be 2 bytes
in Thumb) and the correct opcode (The machInst field contains some
appended metadata)

Change-Id: I3bed4d9fd7c77feaeded40ded192afe445d306ea
Signed-off-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/6781
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
Giacomo Travaglini
2017-12-15 10:03:19 +00:00
parent 50749b8496
commit 1e05c29982

View File

@@ -423,6 +423,25 @@ class ArmStaticInst : public StaticInst
{
return intWidth;
}
/** Returns the byte size of current instruction */
ssize_t
instSize() const
{
return (!machInst.thumb || machInst.bigThumb) ? 4 : 2;
}
/**
* Returns the real encoding of the instruction:
* the machInst field is in fact always 64 bit wide and
* contains some instruction metadata, which means it differs
* from the real opcode.
*/
MachInst
encoding() const
{
return static_cast<MachInst>(mask(instSize() * 8));
}
};
}