summaryrefslogtreecommitdiff
path: root/src/arch
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:07 -0500
committerGabe Black <gblack@eecs.umich.edu>2010-06-02 12:58:07 -0500
commit9ffc5e2ae64017cec061b112f4dc5e5846f44ed7 (patch)
tree5b9b3283c29f2f70e5e055620a57b752b3e208d2 /src/arch
parentc4d09747a513ea54e459cd448d1684dfd232f375 (diff)
downloadgem5-9ffc5e2ae64017cec061b112f4dc5e5846f44ed7.tar.xz
ARM: Implement the pkh instruction.
Diffstat (limited to 'src/arch')
-rw-r--r--src/arch/arm/isa/insts/data.isa17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/arch/arm/isa/insts/data.isa b/src/arch/arm/isa/insts/data.isa
index ee291a1d5..474bd8c4e 100644
--- a/src/arch/arm/isa/insts/data.isa
+++ b/src/arch/arm/isa/insts/data.isa
@@ -792,4 +792,21 @@ let {{
replaceBits(resTemp, 31, 16, midRes);
Dest = resTemp;
''', flagType="none", buildCc=False)
+
+ buildRegDataInst("pkhbt", '''
+ uint32_t resTemp = 0;
+ uint16_t arg1Low = bits(Op1, 15, 0);
+ uint16_t arg2High = bits(secondOp, 31, 16);
+ replaceBits(resTemp, 15, 0, arg1Low);
+ replaceBits(resTemp, 31, 16, arg2High);
+ Dest = resTemp;
+ ''', flagType="none", buildCc=False)
+ buildRegDataInst("pkhtb", '''
+ uint32_t resTemp = 0;
+ uint16_t arg1High = bits(Op1, 31, 16);
+ uint16_t arg2Low = bits(secondOp, 15, 0);
+ replaceBits(resTemp, 15, 0, arg2Low);
+ replaceBits(resTemp, 31, 16, arg1High);
+ Dest = resTemp;
+ ''', flagType="none", buildCc=False)
}};