diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-17 21:14:08 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-08-17 21:14:08 -0400 |
commit | 19147d0eb1472eac690a9a708893d4de096bbfcf (patch) | |
tree | 7d68cc017199365b224c072130e64bfd929f7703 /arch/sparc | |
parent | 2a6a432a9ce55876b92f9ea860d7baa05538de16 (diff) | |
parent | 86fa04b8742ac681d470786f55e2403ada0075b2 (diff) |
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: Fix atomic64_t routine return values.
sparc64: Fix rwsem constant bug leading to hangs.
sparc: Hook up new fanotify and prlimit64 syscalls.
sparc: Really fix "console=" for serial consoles.
Diffstat (limited to 'arch/sparc')
-rw-r--r-- | arch/sparc/include/asm/atomic_64.h | 6 | ||||
-rw-r--r-- | arch/sparc/include/asm/fb.h | 4 | ||||
-rw-r--r-- | arch/sparc/include/asm/rwsem-const.h | 2 | ||||
-rw-r--r-- | arch/sparc/include/asm/unistd.h | 5 | ||||
-rw-r--r-- | arch/sparc/kernel/sys32.S | 9 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_32.S | 3 | ||||
-rw-r--r-- | arch/sparc/kernel/systbls_64.S | 6 |
7 files changed, 27 insertions, 8 deletions
diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h index 2050ca02c423..f0c74227c737 100644 --- a/arch/sparc/include/asm/atomic_64.h +++ b/arch/sparc/include/asm/atomic_64.h | |||
@@ -25,9 +25,9 @@ extern void atomic_sub(int, atomic_t *); | |||
25 | extern void atomic64_sub(int, atomic64_t *); | 25 | extern void atomic64_sub(int, atomic64_t *); |
26 | 26 | ||
27 | extern int atomic_add_ret(int, atomic_t *); | 27 | extern int atomic_add_ret(int, atomic_t *); |
28 | extern int atomic64_add_ret(int, atomic64_t *); | 28 | extern long atomic64_add_ret(int, atomic64_t *); |
29 | extern int atomic_sub_ret(int, atomic_t *); | 29 | extern int atomic_sub_ret(int, atomic_t *); |
30 | extern int atomic64_sub_ret(int, atomic64_t *); | 30 | extern long atomic64_sub_ret(int, atomic64_t *); |
31 | 31 | ||
32 | #define atomic_dec_return(v) atomic_sub_ret(1, v) | 32 | #define atomic_dec_return(v) atomic_sub_ret(1, v) |
33 | #define atomic64_dec_return(v) atomic64_sub_ret(1, v) | 33 | #define atomic64_dec_return(v) atomic64_sub_ret(1, v) |
@@ -91,7 +91,7 @@ static inline int atomic_add_unless(atomic_t *v, int a, int u) | |||
91 | ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) | 91 | ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) |
92 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) | 92 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) |
93 | 93 | ||
94 | static inline int atomic64_add_unless(atomic64_t *v, long a, long u) | 94 | static inline long atomic64_add_unless(atomic64_t *v, long a, long u) |
95 | { | 95 | { |
96 | long c, old; | 96 | long c, old; |
97 | c = atomic64_read(v); | 97 | c = atomic64_read(v); |
diff --git a/arch/sparc/include/asm/fb.h b/arch/sparc/include/asm/fb.h index e834880be204..2173432ad7f7 100644 --- a/arch/sparc/include/asm/fb.h +++ b/arch/sparc/include/asm/fb.h | |||
@@ -1,5 +1,6 @@ | |||
1 | #ifndef _SPARC_FB_H_ | 1 | #ifndef _SPARC_FB_H_ |
2 | #define _SPARC_FB_H_ | 2 | #define _SPARC_FB_H_ |
3 | #include <linux/console.h> | ||
3 | #include <linux/fb.h> | 4 | #include <linux/fb.h> |
4 | #include <linux/fs.h> | 5 | #include <linux/fs.h> |
5 | #include <asm/page.h> | 6 | #include <asm/page.h> |
@@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info) | |||
18 | struct device *dev = info->device; | 19 | struct device *dev = info->device; |
19 | struct device_node *node; | 20 | struct device_node *node; |
20 | 21 | ||
22 | if (console_set_on_cmdline) | ||
23 | return 0; | ||
24 | |||
21 | node = dev->of_node; | 25 | node = dev->of_node; |
22 | if (node && | 26 | if (node && |
23 | node == of_console_device) | 27 | node == of_console_device) |
diff --git a/arch/sparc/include/asm/rwsem-const.h b/arch/sparc/include/asm/rwsem-const.h index a303c9d64d84..e4c61a18bb28 100644 --- a/arch/sparc/include/asm/rwsem-const.h +++ b/arch/sparc/include/asm/rwsem-const.h | |||
@@ -5,7 +5,7 @@ | |||
5 | #define RWSEM_UNLOCKED_VALUE 0x00000000 | 5 | #define RWSEM_UNLOCKED_VALUE 0x00000000 |
6 | #define RWSEM_ACTIVE_BIAS 0x00000001 | 6 | #define RWSEM_ACTIVE_BIAS 0x00000001 |
7 | #define RWSEM_ACTIVE_MASK 0x0000ffff | 7 | #define RWSEM_ACTIVE_MASK 0x0000ffff |
8 | #define RWSEM_WAITING_BIAS 0xffff0000 | 8 | #define RWSEM_WAITING_BIAS (-0x00010000) |
9 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS | 9 | #define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS |
10 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) | 10 | #define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS) |
11 | 11 | ||
diff --git a/arch/sparc/include/asm/unistd.h b/arch/sparc/include/asm/unistd.h index d0b3b01ac9d4..03eb5a8f6f93 100644 --- a/arch/sparc/include/asm/unistd.h +++ b/arch/sparc/include/asm/unistd.h | |||
@@ -397,8 +397,11 @@ | |||
397 | #define __NR_rt_tgsigqueueinfo 326 | 397 | #define __NR_rt_tgsigqueueinfo 326 |
398 | #define __NR_perf_event_open 327 | 398 | #define __NR_perf_event_open 327 |
399 | #define __NR_recvmmsg 328 | 399 | #define __NR_recvmmsg 328 |
400 | #define __NR_fanotify_init 329 | ||
401 | #define __NR_fanotify_mark 330 | ||
402 | #define __NR_prlimit64 331 | ||
400 | 403 | ||
401 | #define NR_syscalls 329 | 404 | #define NR_syscalls 332 |
402 | 405 | ||
403 | #ifdef __32bit_syscall_numbers__ | 406 | #ifdef __32bit_syscall_numbers__ |
404 | /* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, | 407 | /* Sparc 32-bit only has the "setresuid32", "getresuid32" variants, |
diff --git a/arch/sparc/kernel/sys32.S b/arch/sparc/kernel/sys32.S index 46a76ba3fb4b..44e5faf1ad5f 100644 --- a/arch/sparc/kernel/sys32.S +++ b/arch/sparc/kernel/sys32.S | |||
@@ -330,6 +330,15 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */ | |||
330 | nop | 330 | nop |
331 | nop | 331 | nop |
332 | 332 | ||
333 | .globl sys32_fanotify_mark | ||
334 | sys32_fanotify_mark: | ||
335 | sethi %hi(sys_fanotify_mark), %g1 | ||
336 | sllx %o2, 32, %o2 | ||
337 | or %o2, %o3, %o2 | ||
338 | mov %o4, %o3 | ||
339 | jmpl %g1 + %lo(sys_fanotify_mark), %g0 | ||
340 | mov %o5, %o4 | ||
341 | |||
333 | .section __ex_table,"a" | 342 | .section __ex_table,"a" |
334 | .align 4 | 343 | .align 4 |
335 | .word 1b, __retl_efault, 2b, __retl_efault | 344 | .word 1b, __retl_efault, 2b, __retl_efault |
diff --git a/arch/sparc/kernel/systbls_32.S b/arch/sparc/kernel/systbls_32.S index 801fc8e5a0e8..ec396e1916b9 100644 --- a/arch/sparc/kernel/systbls_32.S +++ b/arch/sparc/kernel/systbls_32.S | |||
@@ -82,5 +82,6 @@ sys_call_table: | |||
82 | /*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate | 82 | /*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate |
83 | /*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 | 83 | /*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 |
84 | /*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv | 84 | /*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv |
85 | /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg | 85 | /*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init |
86 | /*330*/ .long sys_fanotify_mark, sys_prlimit64 | ||
86 | 87 | ||
diff --git a/arch/sparc/kernel/systbls_64.S b/arch/sparc/kernel/systbls_64.S index 9db058dd039e..8cfcaa549580 100644 --- a/arch/sparc/kernel/systbls_64.S +++ b/arch/sparc/kernel/systbls_64.S | |||
@@ -83,7 +83,8 @@ sys_call_table32: | |||
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, sys_accept4, compat_sys_preadv | 85 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv |
86 | .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg | 86 | .word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init |
87 | /*330*/ .word sys32_fanotify_mark, sys_prlimit64 | ||
87 | 88 | ||
88 | #endif /* CONFIG_COMPAT */ | 89 | #endif /* CONFIG_COMPAT */ |
89 | 90 | ||
@@ -158,4 +159,5 @@ sys_call_table: | |||
158 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate | 159 | /*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate |
159 | .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 | 160 | .word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1 |
160 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv | 161 | /*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv |
161 | .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg | 162 | .word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init |
163 | /*330*/ .word sys_fanotify_mark, sys_prlimit64 | ||