Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
This commit is contained in:
commit
f7dd16bf3a
|
@ -38,7 +38,7 @@
|
|||
|
||||
#define curptr g6
|
||||
|
||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
||||
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||
|
||||
/* These are just handy. */
|
||||
#define _SV save %sp, -STACKFRAME_SZ, %sp
|
||||
|
|
|
@ -323,11 +323,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
|
|||
case FMOVS:
|
||||
case FABSS:
|
||||
case FNEGS: TYPE(2,1,0,1,0,0,0); break;
|
||||
default:
|
||||
#ifdef DEBUG_MATHEMU
|
||||
printk("unknown FPop1: %03lx\n",(insn>>5)&0x1ff);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
} else if ((insn & 0xc1f80000) == 0x81a80000) /* FPOP2 */ {
|
||||
switch ((insn >> 5) & 0x1ff) {
|
||||
|
@ -337,11 +332,6 @@ static int do_one_mathemu(u32 insn, unsigned long *pfsr, unsigned long *fregs)
|
|||
case FCMPED: TYPE(3,0,0,2,1,2,1); break;
|
||||
case FCMPQ: TYPE(3,0,0,3,1,3,1); break;
|
||||
case FCMPEQ: TYPE(3,0,0,3,1,3,1); break;
|
||||
default:
|
||||
#ifdef DEBUG_MATHEMU
|
||||
printk("unknown FPop2: %03lx\n",(insn>>5)&0x1ff);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -25,7 +25,7 @@
|
|||
|
||||
#define curptr g6
|
||||
|
||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
||||
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||
|
||||
.text
|
||||
.align 32
|
||||
|
|
|
@ -84,7 +84,6 @@ SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
|
|||
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
|
||||
SIGN1(sys32_mlockall, sys_mlockall, %o0)
|
||||
SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %o0)
|
||||
SIGN1(sys32_clock_settime, compat_sys_clock_settime, %o1)
|
||||
SIGN1(sys32_clock_nanosleep, compat_sys_clock_nanosleep, %o1)
|
||||
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
|
||||
SIGN1(sys32_io_submit, compat_sys_io_submit, %o1)
|
||||
|
|
|
@ -71,7 +71,7 @@ sys_call_table32:
|
|||
/*240*/ .word sys_munlockall, sys32_sched_setparam, sys32_sched_getparam, sys32_sched_setscheduler, sys32_sched_getscheduler
|
||||
.word sys_sched_yield, sys32_sched_get_priority_max, sys32_sched_get_priority_min, sys32_sched_rr_get_interval, compat_sys_nanosleep
|
||||
/*250*/ .word sys32_mremap, sys32_sysctl, sys32_getsid, sys_fdatasync, sys32_nfsservctl
|
||||
.word sys_ni_syscall, sys32_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
|
||||
.word sys_ni_syscall, compat_sys_clock_settime, compat_sys_clock_gettime, compat_sys_clock_getres, sys32_clock_nanosleep
|
||||
/*260*/ .word compat_sys_sched_getaffinity, compat_sys_sched_setaffinity, sys32_timer_settime, compat_sys_timer_gettime, sys_timer_getoverrun
|
||||
.word sys_timer_delete, compat_sys_timer_create, sys_ni_syscall, compat_sys_io_setup, sys_io_destroy
|
||||
/*270*/ .word sys32_io_submit, sys_io_cancel, compat_sys_io_getevents, sys32_mq_open, sys_mq_unlink
|
||||
|
|
|
@ -131,6 +131,28 @@ static void inline __read_lock(raw_rwlock_t *lock)
|
|||
: "memory");
|
||||
}
|
||||
|
||||
static int inline __read_trylock(raw_rwlock_t *lock)
|
||||
{
|
||||
int tmp1, tmp2;
|
||||
|
||||
__asm__ __volatile__ (
|
||||
"1: ldsw [%2], %0\n"
|
||||
" brlz,a,pn %0, 2f\n"
|
||||
" mov 0, %0\n"
|
||||
" add %0, 1, %1\n"
|
||||
" cas [%2], %0, %1\n"
|
||||
" cmp %0, %1\n"
|
||||
" membar #StoreLoad | #StoreStore\n"
|
||||
" bne,pn %%icc, 1b\n"
|
||||
" mov 1, %0\n"
|
||||
"2:"
|
||||
: "=&r" (tmp1), "=&r" (tmp2)
|
||||
: "r" (lock)
|
||||
: "memory");
|
||||
|
||||
return tmp1;
|
||||
}
|
||||
|
||||
static void inline __read_unlock(raw_rwlock_t *lock)
|
||||
{
|
||||
unsigned long tmp1, tmp2;
|
||||
|
@ -211,12 +233,12 @@ static int inline __write_trylock(raw_rwlock_t *lock)
|
|||
}
|
||||
|
||||
#define __raw_read_lock(p) __read_lock(p)
|
||||
#define __raw_read_trylock(p) __read_trylock(p)
|
||||
#define __raw_read_unlock(p) __read_unlock(p)
|
||||
#define __raw_write_lock(p) __write_lock(p)
|
||||
#define __raw_write_unlock(p) __write_unlock(p)
|
||||
#define __raw_write_trylock(p) __write_trylock(p)
|
||||
|
||||
#define __raw_read_trylock(lock) generic__raw_read_trylock(lock)
|
||||
#define __raw_read_can_lock(rw) (!((rw)->lock & 0x80000000UL))
|
||||
#define __raw_write_can_lock(rw) (!(rw)->lock)
|
||||
|
||||
|
|
Loading…
Reference in a new issue