> [snip] > > //" bne %0, %9, 2b\n" > > " .set mips0\n" > > " .set reorder" > > : "=r" (tag[1][way][0]), "=r" (datalo[1][way][0]), > > "=r" (datahi[1][way][0]), > > "=r" (tag[1][way][1]), "=r" (datalo[1][way][1]), > > "=r" (datahi[1][way][1]), > > "=r" (tag[1][way][2]), "=r" (datalo[1][way][2]), > > "=r" (datahi[1][way][2]), > > "=r" (tag[1][way][3]), "=r" (datalo[1][way][3]), > > "=r" (datahi[1][way][3]) > > : "r" (0x80000000 | (way << 14) | (line << 5)) > > ); > > And this part may cause the problem you are seeing, I presume > datalo/datahi live in memory, and accesses of it change the dcache. As I was hoping disassembly would demonstrate for you, declaring "=r" doesn't mean that the variable has no life outside a register. Regards, Kevin K.