diff options
| author | Dave Butcher <david.butcher@arm.com> | 2010-06-02 14:52:21 +0100 |
|---|---|---|
| committer | Steve Kondik <shade@chemlab.org> | 2010-06-07 19:21:01 -0400 |
| commit | dd6c2479357965dd3e10c97f6a4d59de9e176557 (patch) | |
| tree | 71befc1f615b62688f5800e8a181a910eec51021 /vm/mterp/armv6t2 | |
| parent | d1dbd9b7318ffe8ab05028ebde4a49c7647028a0 (diff) | |
| download | android_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.S | 4 |
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 |
