diff options
Diffstat (limited to 'arch/sparc64/kernel/unaligned.c')
-rw-r--r-- | arch/sparc64/kernel/unaligned.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/arch/sparc64/kernel/unaligned.c b/arch/sparc64/kernel/unaligned.c index 42718f6a7d36..02af08ffec8f 100644 --- a/arch/sparc64/kernel/unaligned.c +++ b/arch/sparc64/kernel/unaligned.c | |||
@@ -294,7 +294,7 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn, u | |||
294 | 294 | ||
295 | kernel_mna_trap_fault(); | 295 | kernel_mna_trap_fault(); |
296 | } else { | 296 | } else { |
297 | unsigned long addr; | 297 | unsigned long addr, *reg_addr; |
298 | int orig_asi, asi; | 298 | int orig_asi, asi; |
299 | 299 | ||
300 | addr = compute_effective_address(regs, insn, | 300 | addr = compute_effective_address(regs, insn, |
@@ -319,11 +319,11 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn, u | |||
319 | }; | 319 | }; |
320 | switch (dir) { | 320 | switch (dir) { |
321 | case load: | 321 | case load: |
322 | do_int_load(fetch_reg_addr(((insn>>25)&0x1f), regs), | 322 | reg_addr = fetch_reg_addr(((insn>>25)&0x1f), regs); |
323 | size, (unsigned long *) addr, | 323 | do_int_load(reg_addr, size, (unsigned long *) addr, |
324 | decode_signedness(insn), asi); | 324 | decode_signedness(insn), asi); |
325 | if (unlikely(asi != orig_asi)) { | 325 | if (unlikely(asi != orig_asi)) { |
326 | unsigned long val_in = *(unsigned long *) addr; | 326 | unsigned long val_in = *reg_addr; |
327 | switch (size) { | 327 | switch (size) { |
328 | case 2: | 328 | case 2: |
329 | val_in = swab16(val_in); | 329 | val_in = swab16(val_in); |
@@ -339,7 +339,7 @@ asmlinkage void kernel_unaligned_trap(struct pt_regs *regs, unsigned int insn, u | |||
339 | BUG(); | 339 | BUG(); |
340 | break; | 340 | break; |
341 | }; | 341 | }; |
342 | *(unsigned long *) addr = val_in; | 342 | *reg_addr = val_in; |
343 | } | 343 | } |
344 | break; | 344 | break; |
345 | 345 | ||