Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
sparc64: Sync FPU state in VIS emulation handler.
sparc64: Fix VIS emulation bugs
sparc: asm/bitops.h should define __fls
sparc64: Fix bug in PTRACE_SETFPREGS64 handling.

+6 -3
+1
arch/sparc/include/asm/bitops_32.h
··· 98 98 #include <asm-generic/bitops/sched.h> 99 99 #include <asm-generic/bitops/ffs.h> 100 100 #include <asm-generic/bitops/fls.h> 101 + #include <asm-generic/bitops/__fls.h> 101 102 #include <asm-generic/bitops/fls64.h> 102 103 #include <asm-generic/bitops/hweight.h> 103 104 #include <asm-generic/bitops/lock.h>
+1 -1
arch/sparc64/kernel/ptrace.c
··· 1014 1014 break; 1015 1015 1016 1016 case PTRACE_SETFPREGS64: 1017 - ret = copy_regset_to_user(child, view, REGSET_FP, 1017 + ret = copy_regset_from_user(child, view, REGSET_FP, 1018 1018 0 * sizeof(u64), 1019 1019 33 * sizeof(u64), 1020 1020 fps);
+4 -2
arch/sparc64/kernel/visemul.c
··· 131 131 #define VIS_OPF_SHIFT 5 132 132 #define VIS_OPF_MASK (0x1ff << VIS_OPF_SHIFT) 133 133 134 - #define RS1(INSN) (((INSN) >> 24) & 0x1f) 134 + #define RS1(INSN) (((INSN) >> 14) & 0x1f) 135 135 #define RS2(INSN) (((INSN) >> 0) & 0x1f) 136 136 #define RD(INSN) (((INSN) >> 25) & 0x1f) 137 137 ··· 445 445 unsigned long i; 446 446 447 447 rs1 = fpd_regval(f, RS1(insn)); 448 - rs2 = fpd_regval(f, RS1(insn)); 448 + rs2 = fpd_regval(f, RS2(insn)); 449 449 rd = fpd_regaddr(f, RD(insn)); 450 450 451 451 rd_val = *rd; ··· 806 806 807 807 if (get_user(insn, (u32 __user *) pc)) 808 808 return -EFAULT; 809 + 810 + save_and_clear_fpu(); 809 811 810 812 opf = (insn & VIS_OPF_MASK) >> VIS_OPF_SHIFT; 811 813 switch (opf) {