mirror of https://gitee.com/openkylin/linux.git
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.
This commit is contained in:
commit
19147d0eb1
|
@ -25,9 +25,9 @@ extern void atomic_sub(int, atomic_t *);
|
|||
extern void atomic64_sub(int, atomic64_t *);
|
||||
|
||||
extern int atomic_add_ret(int, atomic_t *);
|
||||
extern int atomic64_add_ret(int, atomic64_t *);
|
||||
extern long atomic64_add_ret(int, atomic64_t *);
|
||||
extern int atomic_sub_ret(int, atomic_t *);
|
||||
extern int atomic64_sub_ret(int, atomic64_t *);
|
||||
extern long atomic64_sub_ret(int, atomic64_t *);
|
||||
|
||||
#define atomic_dec_return(v) atomic_sub_ret(1, v)
|
||||
#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)
|
|||
((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n)))
|
||||
#define atomic64_xchg(v, new) (xchg(&((v)->counter), new))
|
||||
|
||||
static inline int atomic64_add_unless(atomic64_t *v, long a, long u)
|
||||
static inline long atomic64_add_unless(atomic64_t *v, long a, long u)
|
||||
{
|
||||
long c, old;
|
||||
c = atomic64_read(v);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
#ifndef _SPARC_FB_H_
|
||||
#define _SPARC_FB_H_
|
||||
#include <linux/console.h>
|
||||
#include <linux/fb.h>
|
||||
#include <linux/fs.h>
|
||||
#include <asm/page.h>
|
||||
|
@ -18,6 +19,9 @@ static inline int fb_is_primary_device(struct fb_info *info)
|
|||
struct device *dev = info->device;
|
||||
struct device_node *node;
|
||||
|
||||
if (console_set_on_cmdline)
|
||||
return 0;
|
||||
|
||||
node = dev->of_node;
|
||||
if (node &&
|
||||
node == of_console_device)
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#define RWSEM_UNLOCKED_VALUE 0x00000000
|
||||
#define RWSEM_ACTIVE_BIAS 0x00000001
|
||||
#define RWSEM_ACTIVE_MASK 0x0000ffff
|
||||
#define RWSEM_WAITING_BIAS 0xffff0000
|
||||
#define RWSEM_WAITING_BIAS (-0x00010000)
|
||||
#define RWSEM_ACTIVE_READ_BIAS RWSEM_ACTIVE_BIAS
|
||||
#define RWSEM_ACTIVE_WRITE_BIAS (RWSEM_WAITING_BIAS + RWSEM_ACTIVE_BIAS)
|
||||
|
||||
|
|
|
@ -397,8 +397,11 @@
|
|||
#define __NR_rt_tgsigqueueinfo 326
|
||||
#define __NR_perf_event_open 327
|
||||
#define __NR_recvmmsg 328
|
||||
#define __NR_fanotify_init 329
|
||||
#define __NR_fanotify_mark 330
|
||||
#define __NR_prlimit64 331
|
||||
|
||||
#define NR_syscalls 329
|
||||
#define NR_syscalls 332
|
||||
|
||||
#ifdef __32bit_syscall_numbers__
|
||||
/* Sparc 32-bit only has the "setresuid32", "getresuid32" variants,
|
||||
|
|
|
@ -330,6 +330,15 @@ do_sys_accept4: /* sys_accept4(int, struct sockaddr *, int *, int) */
|
|||
nop
|
||||
nop
|
||||
|
||||
.globl sys32_fanotify_mark
|
||||
sys32_fanotify_mark:
|
||||
sethi %hi(sys_fanotify_mark), %g1
|
||||
sllx %o2, 32, %o2
|
||||
or %o2, %o3, %o2
|
||||
mov %o4, %o3
|
||||
jmpl %g1 + %lo(sys_fanotify_mark), %g0
|
||||
mov %o5, %o4
|
||||
|
||||
.section __ex_table,"a"
|
||||
.align 4
|
||||
.word 1b, __retl_efault, 2b, __retl_efault
|
||||
|
|
|
@ -82,5 +82,6 @@ sys_call_table:
|
|||
/*310*/ .long sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
|
||||
/*315*/ .long sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
|
||||
/*320*/ .long sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
|
||||
/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg
|
||||
/*325*/ .long sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
|
||||
/*330*/ .long sys_fanotify_mark, sys_prlimit64
|
||||
|
||||
|
|
|
@ -83,7 +83,8 @@ sys_call_table32:
|
|||
/*310*/ .word compat_sys_utimensat, compat_sys_signalfd, sys_timerfd_create, sys_eventfd, compat_sys_fallocate
|
||||
.word compat_sys_timerfd_settime, compat_sys_timerfd_gettime, compat_sys_signalfd4, sys_eventfd2, sys_epoll_create1
|
||||
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, compat_sys_preadv
|
||||
.word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg
|
||||
.word compat_sys_pwritev, compat_sys_rt_tgsigqueueinfo, sys_perf_event_open, compat_sys_recvmmsg, sys_fanotify_init
|
||||
/*330*/ .word sys32_fanotify_mark, sys_prlimit64
|
||||
|
||||
#endif /* CONFIG_COMPAT */
|
||||
|
||||
|
@ -158,4 +159,5 @@ sys_call_table:
|
|||
/*310*/ .word sys_utimensat, sys_signalfd, sys_timerfd_create, sys_eventfd, sys_fallocate
|
||||
.word sys_timerfd_settime, sys_timerfd_gettime, sys_signalfd4, sys_eventfd2, sys_epoll_create1
|
||||
/*320*/ .word sys_dup3, sys_pipe2, sys_inotify_init1, sys_accept4, sys_preadv
|
||||
.word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg
|
||||
.word sys_pwritev, sys_rt_tgsigqueueinfo, sys_perf_event_open, sys_recvmmsg, sys_fanotify_init
|
||||
/*330*/ .word sys_fanotify_mark, sys_prlimit64
|
||||
|
|
|
@ -55,7 +55,12 @@ EXPORT_SYMBOL(sunserial_unregister_minors);
|
|||
int sunserial_console_match(struct console *con, struct device_node *dp,
|
||||
struct uart_driver *drv, int line, bool ignore_line)
|
||||
{
|
||||
if (!con || of_console_device != dp)
|
||||
if (!con)
|
||||
return 0;
|
||||
|
||||
drv->cons = con;
|
||||
|
||||
if (of_console_device != dp)
|
||||
return 0;
|
||||
|
||||
if (!ignore_line) {
|
||||
|
@ -69,12 +74,10 @@ int sunserial_console_match(struct console *con, struct device_node *dp,
|
|||
return 0;
|
||||
}
|
||||
|
||||
con->index = line;
|
||||
drv->cons = con;
|
||||
|
||||
if (!console_set_on_cmdline)
|
||||
if (!console_set_on_cmdline) {
|
||||
con->index = line;
|
||||
add_preferred_console(con->name, line, NULL);
|
||||
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
EXPORT_SYMBOL(sunserial_console_match);
|
||||
|
|
Loading…
Reference in New Issue