From: Andy McFadden Date: Mon, 8 Jun 2009 17:36:02 +0000 (-0700) Subject: Correct instruction width for move-wide/16. X-Git-Tag: android-x86-2.2~884 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=445194bc141dc67e2f678aa1bbd5e59ca66254e5;p=android-x86%2Fdalvik.git Correct instruction width for move-wide/16. We were advancing the PC by 2 code units instead of 3, which made the VM crash whenever the instruction was used. --- diff --git a/vm/mterp/armv5te/OP_MOVE_WIDE_16.S b/vm/mterp/armv5te/OP_MOVE_WIDE_16.S index 1e0b5f20f..88d996fbc 100644 --- a/vm/mterp/armv5te/OP_MOVE_WIDE_16.S +++ b/vm/mterp/armv5te/OP_MOVE_WIDE_16.S @@ -6,7 +6,7 @@ add r3, rFP, r3, lsl #2 @ r3<- &fp[BBBB] add r2, rFP, r2, lsl #2 @ r2<- &fp[AAAA] ldmia r3, {r0-r1} @ r0/r1<- fp[BBBB] - FETCH_ADVANCE_INST(2) @ advance rPC, load rINST + FETCH_ADVANCE_INST(3) @ advance rPC, load rINST GET_INST_OPCODE(ip) @ extract opcode from rINST stmia r2, {r0-r1} @ fp[AAAA]<- r0/r1 GOTO_OPCODE(ip) @ jump to next instruction diff --git a/vm/mterp/out/InterpAsm-armv4t.S b/vm/mterp/out/InterpAsm-armv4t.S index 0ede75857..b3c2dc197 100644 --- a/vm/mterp/out/InterpAsm-armv4t.S +++ b/vm/mterp/out/InterpAsm-armv4t.S @@ -507,7 +507,7 @@ dalvik_inst: add r3, rFP, r3, lsl #2 @ r3<- &fp[BBBB] add r2, rFP, r2, lsl #2 @ r2<- &fp[AAAA] ldmia r3, {r0-r1} @ r0/r1<- fp[BBBB] - FETCH_ADVANCE_INST(2) @ advance rPC, load rINST + FETCH_ADVANCE_INST(3) @ advance rPC, load rINST GET_INST_OPCODE(ip) @ extract opcode from rINST stmia r2, {r0-r1} @ fp[AAAA]<- r0/r1 GOTO_OPCODE(ip) @ jump to next instruction diff --git a/vm/mterp/out/InterpAsm-armv5te-vfp.S b/vm/mterp/out/InterpAsm-armv5te-vfp.S index e3d33e856..bd30e9073 100644 --- a/vm/mterp/out/InterpAsm-armv5te-vfp.S +++ b/vm/mterp/out/InterpAsm-armv5te-vfp.S @@ -507,7 +507,7 @@ dalvik_inst: add r3, rFP, r3, lsl #2 @ r3<- &fp[BBBB] add r2, rFP, r2, lsl #2 @ r2<- &fp[AAAA] ldmia r3, {r0-r1} @ r0/r1<- fp[BBBB] - FETCH_ADVANCE_INST(2) @ advance rPC, load rINST + FETCH_ADVANCE_INST(3) @ advance rPC, load rINST GET_INST_OPCODE(ip) @ extract opcode from rINST stmia r2, {r0-r1} @ fp[AAAA]<- r0/r1 GOTO_OPCODE(ip) @ jump to next instruction diff --git a/vm/mterp/out/InterpAsm-armv5te.S b/vm/mterp/out/InterpAsm-armv5te.S index d659cf7a5..b3db10364 100644 --- a/vm/mterp/out/InterpAsm-armv5te.S +++ b/vm/mterp/out/InterpAsm-armv5te.S @@ -507,7 +507,7 @@ dalvik_inst: add r3, rFP, r3, lsl #2 @ r3<- &fp[BBBB] add r2, rFP, r2, lsl #2 @ r2<- &fp[AAAA] ldmia r3, {r0-r1} @ r0/r1<- fp[BBBB] - FETCH_ADVANCE_INST(2) @ advance rPC, load rINST + FETCH_ADVANCE_INST(3) @ advance rPC, load rINST GET_INST_OPCODE(ip) @ extract opcode from rINST stmia r2, {r0-r1} @ fp[AAAA]<- r0/r1 GOTO_OPCODE(ip) @ jump to next instruction