summaryrefslogtreecommitdiffstats
path: root/vm/mterp/armv6t2
diff options
context:
space:
mode:
authorDave Butcher <david.butcher@arm.com>2010-06-02 14:52:21 +0100
committerSteve Kondik <shade@chemlab.org>2010-06-07 19:21:01 -0400
commitdd6c2479357965dd3e10c97f6a4d59de9e176557 (patch)
tree71befc1f615b62688f5800e8a181a910eec51021 /vm/mterp/armv6t2
parentd1dbd9b7318ffe8ab05028ebde4a49c7647028a0 (diff)
downloadandroid_dalvik-eclair.tar.gz
android_dalvik-eclair.tar.bz2
android_dalvik-eclair.zip
Fix for use of UNPREDICTABLE register combinationeclair
Use of the LDRD instruction form LDRD Rt, Rt2, [Rn, Rm] has restrictions on the register combinations - specifically if Rt or Rt2 is equal to Rn or Rm the behaviour is defined as 'UNPREDICTABLE'. Change-Id: I19834783865e07897cc7012367e698447f023ce6
Diffstat (limited to 'vm/mterp/armv6t2')
-rw-r--r--vm/mterp/armv6t2/OP_IGET_WIDE_QUICK.S4
1 files changed, 2 insertions, 2 deletions
diff --git a/vm/mterp/armv6t2/OP_IGET_WIDE_QUICK.S b/vm/mterp/armv6t2/OP_IGET_WIDE_QUICK.S
index 129f4242e..98abf724e 100644
--- a/vm/mterp/armv6t2/OP_IGET_WIDE_QUICK.S
+++ b/vm/mterp/armv6t2/OP_IGET_WIDE_QUICK.S
@@ -2,12 +2,12 @@
%verify "null object"
/* iget-wide-quick vA, vB, offset@CCCC */
mov r2, rINST, lsr #12 @ r2<- B
- FETCH(r1, 1) @ r1<- field byte offset
+ FETCH(ip, 1) @ ip<- field byte offset
GET_VREG(r3, r2) @ r3<- object we're operating on
ubfx r2, rINST, #8, #4 @ r2<- A
cmp r3, #0 @ check object for null
beq common_errNullObject @ object was null
- ldrd r0, [r3, r1] @ r0<- obj.field (64 bits, aligned)
+ ldrd r0, [r3, ip] @ r0<- obj.field (64 bits, aligned)
FETCH_ADVANCE_INST(2) @ advance rPC, load rINST
add r3, rFP, r2, lsl #2 @ r3<- &fp[A]
GET_INST_OPCODE(ip) @ extract opcode from rINST