Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/sparc-2.6
This commit is contained in:
@@ -38,7 +38,7 @@
|
|||||||
|
|
||||||
#define curptr g6
|
#define curptr g6
|
||||||
|
|
||||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||||
|
|
||||||
/* These are just handy. */
|
/* These are just handy. */
|
||||||
#define _SV save %sp, -STACKFRAME_SZ, %sp
|
#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 FMOVS:
|
||||||
case FABSS:
|
case FABSS:
|
||||||
case FNEGS: TYPE(2,1,0,1,0,0,0); break;
|
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 */ {
|
} else if ((insn & 0xc1f80000) == 0x81a80000) /* FPOP2 */ {
|
||||||
switch ((insn >> 5) & 0x1ff) {
|
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 FCMPED: TYPE(3,0,0,2,1,2,1); break;
|
||||||
case FCMPQ: TYPE(3,0,0,3,1,3,1); break;
|
case FCMPQ: TYPE(3,0,0,3,1,3,1); break;
|
||||||
case FCMPEQ: 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 curptr g6
|
||||||
|
|
||||||
#define NR_SYSCALLS 284 /* Each OS is different... */
|
#define NR_SYSCALLS 299 /* Each OS is different... */
|
||||||
|
|
||||||
.text
|
.text
|
||||||
.align 32
|
.align 32
|
||||||
|
@@ -84,7 +84,6 @@ SIGN2(sys32_fadvise64_64, compat_sys_fadvise64_64, %o0, %o5)
|
|||||||
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
|
SIGN2(sys32_bdflush, sys_bdflush, %o0, %o1)
|
||||||
SIGN1(sys32_mlockall, sys_mlockall, %o0)
|
SIGN1(sys32_mlockall, sys_mlockall, %o0)
|
||||||
SIGN1(sys32_nfsservctl, compat_sys_nfsservctl, %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_clock_nanosleep, compat_sys_clock_nanosleep, %o1)
|
||||||
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
|
SIGN1(sys32_timer_settime, compat_sys_timer_settime, %o1)
|
||||||
SIGN1(sys32_io_submit, compat_sys_io_submit, %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
|
/*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
|
.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
|
/*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
|
/*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
|
.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
|
/*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");
|
: "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)
|
static void inline __read_unlock(raw_rwlock_t *lock)
|
||||||
{
|
{
|
||||||
unsigned long tmp1, tmp2;
|
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_lock(p) __read_lock(p)
|
||||||
|
#define __raw_read_trylock(p) __read_trylock(p)
|
||||||
#define __raw_read_unlock(p) __read_unlock(p)
|
#define __raw_read_unlock(p) __read_unlock(p)
|
||||||
#define __raw_write_lock(p) __write_lock(p)
|
#define __raw_write_lock(p) __write_lock(p)
|
||||||
#define __raw_write_unlock(p) __write_unlock(p)
|
#define __raw_write_unlock(p) __write_unlock(p)
|
||||||
#define __raw_write_trylock(p) __write_trylock(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_read_can_lock(rw) (!((rw)->lock & 0x80000000UL))
|
||||||
#define __raw_write_can_lock(rw) (!(rw)->lock)
|
#define __raw_write_can_lock(rw) (!(rw)->lock)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user