@@ -141,27 +141,26 @@ static int emulate_ldh(struct pt_regs *regs, int toreg)
141141static int emulate_ldw (struct pt_regs * regs , int toreg , int flop )
142142{
143143 unsigned long saddr = regs -> ior ;
144- unsigned long val = 0 ;
144+ unsigned long val = 0 , temp1 , temp2 ;
145145 ASM_EXCEPTIONTABLE_VAR (ret );
146146
147147 DPRINTF ("load " RFMT ":" RFMT " to r%d for 4 bytes\n" ,
148148 regs -> isr , regs -> ior , toreg );
149149
150150 __asm__ __volatile__ (
151- " zdep %3 ,28,2,%%r19 \n" /* r19=(ofs&3)*8 */
152- " mtsp %4 , %%sr1\n"
153- " depw %%r0,31,2,%3 \n"
154- "1: ldw 0(%%sr1,%3 ),%0\n"
155- "2: ldw 4(%%sr1,%3 ),%%r20 \n"
156- " subi 32,%%r19,%%r19 \n"
157- " mtctl %%r19 ,11\n"
158- " vshd %0,%%r20 ,%0\n"
151+ " zdep %4 ,28,2,%2 \n" /* r19=(ofs&3)*8 */
152+ " mtsp %5 , %%sr1\n"
153+ " depw %%r0,31,2,%4 \n"
154+ "1: ldw 0(%%sr1,%4 ),%0\n"
155+ "2: ldw 4(%%sr1,%4 ),%3 \n"
156+ " subi 32,%4,%2 \n"
157+ " mtctl %2 ,11\n"
158+ " vshd %0,%3 ,%0\n"
159159"3: \n"
160160 ASM_EXCEPTIONTABLE_ENTRY_EFAULT (1b , 3b )
161161 ASM_EXCEPTIONTABLE_ENTRY_EFAULT (2b , 3b )
162- : "=r" (val ), "+r" (ret )
163- : "0" (val ), "r" (saddr ), "r" (regs -> isr )
164- : "r19" , "r20" );
162+ : "+r" (val ), "+r" (ret ), "=&r" (temp1 ), "=&r" (temp2 )
163+ : "r" (saddr ), "r" (regs -> isr ) );
165164
166165 DPRINTF ("val = 0x" RFMT "\n" , val );
167166
0 commit comments