Index: /trunk/source/lisp-kernel/arm-spentry.s
===================================================================
--- /trunk/source/lisp-kernel/arm-spentry.s	(revision 14782)
+++ /trunk/source/lisp-kernel/arm-spentry.s	(revision 14783)
@@ -2465,6 +2465,5 @@
 3:              
         __(unbox_fixnum(imm0,imm0))
-        __(mul temp0,arg_y,imm0) /* no MLA on ARMv5 */
-        __(add arg_z,arg_z,temp0)
+	__(mla arg_z,arg_y,imm0,arg_z)
         /* arg_z is now row-major-index; get data vector and
            add in possible offset */
@@ -2509,9 +2508,8 @@
         __(unbox_fixnum(imm2,imm2))
         __(unbox_fixnum(imm1,imm1))
-        __(mul arg_y,imm2,arg_y)
-        __(mul imm1,imm2,imm1)
-        __(mul arg_x,imm1,arg_x)
-        __(add arg_z,arg_z,arg_y)
-        __(add arg_z,arg_z,arg_x)
+	/* (+ (* i dim1 dim2) (* j dim2) k) */
+	__(mul imm1,imm2,imm1)
+	__(mla imm2,arg_y,imm2,arg_z)	/* imm2 now a fixnum */
+	__(mla arg_z,arg_x,imm1,imm2)
         __(mov arg_y,temp0)
 0:      __(ldr arg_x,[arg_y,#arrayH.displacement])
@@ -2549,6 +2547,5 @@
 3:              
         __(unbox_fixnum(imm0,imm0))
-        __(mul temp1,arg_x,imm0)
-        __(add arg_y,arg_y,temp1)
+	__(mla arg_y,arg_x,imm0,arg_y)
         /* arg_y is now row-major-index; get data vector and
            add in possible offset */
