patch-2.4.10 linux/arch/arm/mm/fault-armv.c
Next file: linux/arch/arm/tools/Makefile
Previous file: linux/arch/arm/lib/io-writesl.S
Back to the patch index
Back to the overall index
- Lines: 32
- Date:
Fri Sep 7 09:28:38 2001
- Orig file:
v2.4.9/linux/arch/arm/mm/fault-armv.c
- Orig date:
Mon Aug 27 12:41:38 2001
diff -u --recursive --new-file v2.4.9/linux/arch/arm/mm/fault-armv.c linux/arch/arm/mm/fault-armv.c
@@ -20,6 +20,7 @@
#include <linux/mm.h>
#include <linux/interrupt.h>
#include <linux/proc_fs.h>
+#include <linux/bitops.h>
#include <linux/init.h>
#include <asm/system.h>
@@ -366,8 +367,7 @@
ai_multi += 1;
/* count the number of registers in the mask to be transferred */
- for (regbits = REGMASK_BITS(instr), nr_regs = 0; regbits; regbits >>= 1)
- nr_regs += 4;
+ nr_regs = hweight16(REGMASK_BITS(instr)) * 4;
rn = RN_BITS(instr);
newaddr = eaddr = regs->uregs[rn];
@@ -385,10 +385,12 @@
* This is a "hint" - we already have eaddr worked out by the
* processor for us.
*/
- if (addr != eaddr)
+ if (addr != eaddr) {
printk(KERN_ERR "LDMSTM: PC = %08lx, instr = %08lx, "
"addr = %08lx, eaddr = %08lx\n",
instruction_pointer(regs), instr, addr, eaddr);
+ show_regs(regs);
+ }
for (regbits = REGMASK_BITS(instr), rd = 0; regbits; regbits >>= 1, rd += 1)
if (regbits & 1) {
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)