@@ -45,7 +45,7 @@ memmove(void *dst_void,
4545 "addi %2, %2, -4\n" // aligned_dst--;
4646 "addi %3, %3, -4\n" // length -= LITTLE_BLOCK_SIZE;
4747 "sw %0, 0(%2)\n" // aligned_dst = src0;
48- : "=r" (src0 ), "+r" (aligned_src ), "+r" (aligned_dst ), "+r" (length )
48+ : "=& r" (src0 ), "+r" (aligned_src ), "+r" (aligned_dst ), "+r" (length )
4949 :: "memory" );
5050 }
5151
@@ -122,13 +122,13 @@ memmove(void *dst_void,
122122 */
123123 long src0 ;
124124 /* DIG-694: need at least 2 instructions between lw and sw */
125- asm volatile ("lw %0, 0(%4 )\n" // long src0 = *aligned_src;
126- "addi %1, %4 , 4\n" // aligned_src++;
127- "addi %2, %5 , 4\n" // aligned_dst++;
128- "addi %3, %6 , -4\n" // length -= LITTLE_BLOCK_SIZE;
129- "sw %0, -4(%5 )\n" // *(aligned_dst-1) = src0;
130- : "=r" (src0 ), "= r" (aligned_src ), "= r" (aligned_dst ), "= r" (length )
131- : "r" ( aligned_src ), "r" ( aligned_dst ), "r" ( length ) );
125+ asm volatile ("lw %0, 0(%1 )\n" // long src0 = *aligned_src;
126+ "addi %1, %1 , 4\n" // aligned_src++;
127+ "addi %2, %2 , 4\n" // aligned_dst++;
128+ "addi %3, %3 , -4\n" // length -= LITTLE_BLOCK_SIZE;
129+ "sw %0, -4(%2 )\n" // *(aligned_dst-1) = src0;
130+ : "=& r" (src0 ), "+ r" (aligned_src ), "+ r" (aligned_dst ), "+ r" (length )
131+ :: "memory" );
132132 }
133133
134134 /* Pick up any residual with a byte copier. */
0 commit comments