diff options
author | Ingo Molnar <mingo@elte.hu> | 2008-12-08 09:07:49 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-12-08 09:07:49 -0500 |
commit | aa9c9b8c584a42a094202b7e0f63497e888f86a7 (patch) | |
tree | 3cb3b022054a7c1722657288518f495e0c4d9983 /arch/sparc64/kernel | |
parent | 87f7606591aea6a8a38ea4c8911b5eeeee2740b8 (diff) | |
parent | 218d11a8b071b23b76c484fd5f72a4fe3306801e (diff) |
Merge branch 'linus' into x86/quirks
Diffstat (limited to 'arch/sparc64/kernel')
-rw-r--r-- | arch/sparc64/kernel/ptrace.c | 2 | ||||
-rw-r--r-- | arch/sparc64/kernel/smp.c | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/sys32.S | 13 | ||||
-rw-r--r-- | arch/sparc64/kernel/systbls.S | 4 | ||||
-rw-r--r-- | arch/sparc64/kernel/visemul.c | 6 |
5 files changed, 21 insertions, 8 deletions
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c index f43adbc773ca..a941c610e7ce 100644 --- a/arch/sparc64/kernel/ptrace.c +++ b/arch/sparc64/kernel/ptrace.c | |||
@@ -1014,7 +1014,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
1014 | break; | 1014 | break; |
1015 | 1015 | ||
1016 | case PTRACE_SETFPREGS64: | 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 | 0 * sizeof(u64), | 1018 | 0 * sizeof(u64), |
1019 | 33 * sizeof(u64), | 1019 | 33 * sizeof(u64), |
1020 | fps); | 1020 | fps); |
diff --git a/arch/sparc64/kernel/smp.c b/arch/sparc64/kernel/smp.c index e5627118e613..f500b0618bb0 100644 --- a/arch/sparc64/kernel/smp.c +++ b/arch/sparc64/kernel/smp.c | |||
@@ -282,7 +282,7 @@ static unsigned long kimage_addr_to_ra(void *p) | |||
282 | return kern_base + (val - KERNBASE); | 282 | return kern_base + (val - KERNBASE); |
283 | } | 283 | } |
284 | 284 | ||
285 | static void ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg) | 285 | static void __cpuinit ldom_startcpu_cpuid(unsigned int cpu, unsigned long thread_reg) |
286 | { | 286 | { |
287 | extern unsigned long sparc64_ttable_tl0; | 287 | extern unsigned long sparc64_ttable_tl0; |
288 | extern unsigned long kern_locked_tte_data; | 288 | extern unsigned long kern_locked_tte_data; |
@@ -343,7 +343,7 @@ extern unsigned long sparc64_cpu_startup; | |||
343 | */ | 343 | */ |
344 | static struct thread_info *cpu_new_thread = NULL; | 344 | static struct thread_info *cpu_new_thread = NULL; |
345 | 345 | ||
346 | static int __devinit smp_boot_one_cpu(unsigned int cpu) | 346 | static int __cpuinit smp_boot_one_cpu(unsigned int cpu) |
347 | { | 347 | { |
348 | struct trap_per_cpu *tb = &trap_block[cpu]; | 348 | struct trap_per_cpu *tb = &trap_block[cpu]; |
349 | unsigned long entry = | 349 | unsigned long entry = |
diff --git a/arch/sparc64/kernel/sys32.S b/arch/sparc64/kernel/sys32.S index ade18ba0c686..f061c4dda9ef 100644 --- a/arch/sparc64/kernel/sys32.S +++ b/arch/sparc64/kernel/sys32.S | |||
@@ -150,7 +150,7 @@ sys32_mmap2: | |||
150 | sys32_socketcall: /* %o0=call, %o1=args */ | 150 | sys32_socketcall: /* %o0=call, %o1=args */ |
151 | cmp %o0, 1 | 151 | cmp %o0, 1 |
152 | bl,pn %xcc, do_einval | 152 | bl,pn %xcc, do_einval |
153 | cmp %o0, 17 | 153 | cmp %o0, 18 |
154 | bg,pn %xcc, do_einval | 154 | bg,pn %xcc, do_einval |
155 | sub %o0, 1, %o0 | 155 | sub %o0, 1, %o0 |
156 | sllx %o0, 5, %o0 | 156 | sllx %o0, 5, %o0 |
@@ -319,6 +319,15 @@ do_sys_recvmsg: /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) | |||
319 | nop | 319 | nop |
320 | nop | 320 | nop |
321 | nop | 321 | nop |
322 | do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */ | ||
323 | 63: ldswa [%o1 + 0x0] %asi, %o0 | ||
324 | sethi %hi(sys_accept4), %g1 | ||
325 | 64: lduwa [%o1 + 0x8] %asi, %o2 | ||
326 | 65: ldswa [%o1 + 0xc] %asi, %o3 | ||
327 | jmpl %g1 + %lo(sys_accept4), %g0 | ||
328 | 66: lduwa [%o1 + 0x4] %asi, %o1 | ||
329 | nop | ||
330 | nop | ||
322 | 331 | ||
323 | .section __ex_table,"a" | 332 | .section __ex_table,"a" |
324 | .align 4 | 333 | .align 4 |
@@ -353,4 +362,6 @@ do_sys_recvmsg: /* compat_sys_recvmsg(int, struct compat_msghdr *, unsigned int) | |||
353 | .word 57b, __retl_efault, 58b, __retl_efault | 362 | .word 57b, __retl_efault, 58b, __retl_efault |
354 | .word 59b, __retl_efault, 60b, __retl_efault | 363 | .word 59b, __retl_efault, 60b, __retl_efault |
355 | .word 61b, __retl_efault, 62b, __retl_efault | 364 | .word 61b, __retl_efault, 62b, __retl_efault |
365 | .word 63b, __retl_efault, 64b, __retl_efault | ||
366 | .word 65b, __retl_efault, 66b, __retl_efault | ||
356 | .previous | 367 | .previous |
diff --git a/arch/sparc64/kernel/systbls.S b/arch/sparc64/kernel/systbls.S index b2fa4c163638..9fc78cf354bd 100644 --- a/arch/sparc64/kernel/systbls.S +++ b/arch/sparc64/kernel/systbls.S | |||
@@ -82,7 +82,7 @@ sys_call_table32: | |||
82 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait | 82 | .word compat_sys_set_mempolicy, compat_sys_kexec_load, compat_sys_move_pages, sys_getcpu, compat_sys_epoll_pwait |
83 | /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate | 83 | /*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate |
84 | .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 | 84 | .word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1 |
85 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1 | 85 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 |
86 | 86 | ||
87 | #endif /* CONFIG_COMPAT */ | 87 | #endif /* CONFIG_COMPAT */ |
88 | 88 | ||
@@ -156,4 +156,4 @@ sys_call_table: | |||
156 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait | 156 | .word sys_set_mempolicy, sys_kexec_load, sys_move_pages, sys_getcpu, sys_epoll_pwait |
157 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate | 157 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate |
158 | .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 | 158 | .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 |
159 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1 | 159 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4 |
diff --git a/arch/sparc64/kernel/visemul.c b/arch/sparc64/kernel/visemul.c index 9e05cb5cb855..b956fd71c131 100644 --- a/arch/sparc64/kernel/visemul.c +++ b/arch/sparc64/kernel/visemul.c | |||
@@ -131,7 +131,7 @@ | |||
131 | #define VIS_OPF_SHIFT 5 | 131 | #define VIS_OPF_SHIFT 5 |
132 | #define VIS_OPF_MASK (0x1ff << VIS_OPF_SHIFT) | 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 | #define RS2(INSN) (((INSN) >> 0) & 0x1f) | 135 | #define RS2(INSN) (((INSN) >> 0) & 0x1f) |
136 | #define RD(INSN) (((INSN) >> 25) & 0x1f) | 136 | #define RD(INSN) (((INSN) >> 25) & 0x1f) |
137 | 137 | ||
@@ -445,7 +445,7 @@ static void pdist(struct pt_regs *regs, unsigned int insn) | |||
445 | unsigned long i; | 445 | unsigned long i; |
446 | 446 | ||
447 | rs1 = fpd_regval(f, RS1(insn)); | 447 | rs1 = fpd_regval(f, RS1(insn)); |
448 | rs2 = fpd_regval(f, RS1(insn)); | 448 | rs2 = fpd_regval(f, RS2(insn)); |
449 | rd = fpd_regaddr(f, RD(insn)); | 449 | rd = fpd_regaddr(f, RD(insn)); |
450 | 450 | ||
451 | rd_val = *rd; | 451 | rd_val = *rd; |
@@ -807,6 +807,8 @@ int vis_emul(struct pt_regs *regs, unsigned int insn) | |||
807 | if (get_user(insn, (u32 __user *) pc)) | 807 | if (get_user(insn, (u32 __user *) pc)) |
808 | return -EFAULT; | 808 | return -EFAULT; |
809 | 809 | ||
810 | save_and_clear_fpu(); | ||
811 | |||
810 | opf = (insn & VIS_OPF_MASK) >> VIS_OPF_SHIFT; | 812 | opf = (insn & VIS_OPF_MASK) >> VIS_OPF_SHIFT; |
811 | switch (opf) { | 813 | switch (opf) { |
812 | default: | 814 | default: |