summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@penguin.transmeta.com>2002-05-09 22:21:34 -0700
committerLinus Torvalds <torvalds@penguin.transmeta.com>2002-05-09 22:21:34 -0700
commita0f895bbbed36afd56159acb02751eb5ad6ff2a0 (patch)
treecdec7ac79532d8f66f921f6766e2267e3c54a2ab
parentf38b18a0cbb7b7565c4177fe6d3f10d14a166a30 (diff)
parentfc83829c77072995279221719a0ba525cd9968ca (diff)
Merge master.kernel.org:/home/davem/BK/sparc-2.5
into penguin.transmeta.com:/home/penguin/torvalds/repositories/kernel/linux
-rw-r--r--arch/sparc/kernel/ptrace.c32
-rw-r--r--arch/sparc/kernel/sys_sunos.c4
-rw-r--r--arch/sparc64/kernel/pci.c6
-rw-r--r--arch/sparc64/kernel/process.c7
-rw-r--r--arch/sparc64/kernel/ptrace.c32
-rw-r--r--arch/sparc64/kernel/sparc64_ksyms.c4
-rw-r--r--arch/sparc64/kernel/sys_sunos32.c4
-rw-r--r--drivers/video/aty/mach64_gx.c1
-rw-r--r--include/asm-sparc64/bitops.h142
-rw-r--r--include/asm-sparc64/visasm.h2
-rw-r--r--include/math-emu/op-common.h12
11 files changed, 115 insertions, 131 deletions
diff --git a/arch/sparc/kernel/ptrace.c b/arch/sparc/kernel/ptrace.c
index 1d30b5c857f6..bff771351607 100644
--- a/arch/sparc/kernel/ptrace.c
+++ b/arch/sparc/kernel/ptrace.c
@@ -234,29 +234,13 @@ failure:
#ifdef DEBUG_PTRACE
char *pt_rq [] = {
-"TRACEME",
-"PEEKTEXT",
-"PEEKDATA",
-"PEEKUSR",
-"POKETEXT",
-"POKEDATA",
-"POKEUSR",
-"CONT",
-"KILL",
-"SINGLESTEP",
-"SUNATTACH",
-"SUNDETACH",
-"GETREGS",
-"SETREGS",
-"GETFPREGS",
-"SETFPREGS",
-"READDATA",
-"WRITEDATA",
-"READTEXT",
-"WRITETEXT",
-"GETFPAREGS",
-"SETFPAREGS",
-""
+ /* 0 */ "TRACEME", "PEEKTEXT", "PEEKDATA", "PEEKUSR",
+ /* 4 */ "POKETEXT", "POKEDATA", "POKEUSR", "CONT",
+ /* 8 */ "KILL", "SINGLESTEP", "SUNATTACH", "SUNDETACH",
+ /* 12 */ "GETREGS", "SETREGS", "GETFPREGS", "SETFPREGS",
+ /* 16 */ "READDATA", "WRITEDATA", "READTEXT", "WRITETEXT",
+ /* 20 */ "GETFPAREGS", "SETFPAREGS", "unknown", "unknown",
+ /* 24 */ "SYSCALL", ""
};
#endif
@@ -285,7 +269,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
{
char *s;
- if ((request > 0) && (request < 21))
+ if ((request >= 0) && (request <= 24))
s = pt_rq [request];
else
s = "unknown";
diff --git a/arch/sparc/kernel/sys_sunos.c b/arch/sparc/kernel/sys_sunos.c
index de714d85dc7a..e76331f217bb 100644
--- a/arch/sparc/kernel/sys_sunos.c
+++ b/arch/sparc/kernel/sys_sunos.c
@@ -1048,8 +1048,8 @@ static inline int check_nonblock(int ret, int fd)
return ret;
}
-extern asmlinkage int sys_read(unsigned int fd,char *buf,int count);
-extern asmlinkage int sys_write(unsigned int fd,char *buf,int count);
+extern asmlinkage ssize_t sys_read(unsigned int fd,char *buf,int count);
+extern asmlinkage ssize_t sys_write(unsigned int fd,char *buf,int count);
extern asmlinkage int sys_recv(int fd, void * ubuf, int size, unsigned flags);
extern asmlinkage int sys_send(int fd, void * buff, int len, unsigned flags);
extern asmlinkage int sys_accept(int fd, struct sockaddr *sa, int *addrlen);
diff --git a/arch/sparc64/kernel/pci.c b/arch/sparc64/kernel/pci.c
index f21d155c68c0..9f37fe4cf202 100644
--- a/arch/sparc64/kernel/pci.c
+++ b/arch/sparc64/kernel/pci.c
@@ -181,11 +181,11 @@ extern void rs_init(void);
extern void clock_probe(void);
extern void power_init(void);
-static void __init pcibios_init(void)
+static int __init pcibios_init(void)
{
pci_controller_probe();
if (pci_controller_root == NULL)
- return;
+ return 0;
pci_scan_each_controller_bus();
@@ -197,6 +197,8 @@ static void __init pcibios_init(void)
rs_init();
clock_probe();
power_init();
+
+ return 0;
}
subsys_initcall(pcibios_init);
diff --git a/arch/sparc64/kernel/process.c b/arch/sparc64/kernel/process.c
index dbb518664f42..f6e0ab087bd8 100644
--- a/arch/sparc64/kernel/process.c
+++ b/arch/sparc64/kernel/process.c
@@ -586,13 +586,6 @@ barf:
* under SunOS are nothing short of bletcherous:
* Parent --> %o0 == childs pid, %o1 == 0
* Child --> %o0 == parents pid, %o1 == 1
- *
- * NOTE: We have a separate fork kpsr/kwim because
- * the parent could change these values between
- * sys_fork invocation and when we reach here
- * if the parent should sleep while trying to
- * allocate the task_struct and kernel stack in
- * do_fork().
*/
int copy_thread(int nr, unsigned long clone_flags, unsigned long sp,
unsigned long unused,
diff --git a/arch/sparc64/kernel/ptrace.c b/arch/sparc64/kernel/ptrace.c
index eb925b279393..c84a95ee9ee6 100644
--- a/arch/sparc64/kernel/ptrace.c
+++ b/arch/sparc64/kernel/ptrace.c
@@ -78,29 +78,13 @@ pt_os_succ_return (struct pt_regs *regs, unsigned long val, long *addr)
#ifdef DEBUG_PTRACE
char *pt_rq [] = {
-"TRACEME",
-"PEEKTEXT",
-"PEEKDATA",
-"PEEKUSR",
-"POKETEXT",
-"POKEDATA",
-"POKEUSR",
-"CONT",
-"KILL",
-"SINGLESTEP",
-"SUNATTACH",
-"SUNDETACH",
-"GETREGS",
-"SETREGS",
-"GETFPREGS",
-"SETFPREGS",
-"READDATA",
-"WRITEDATA",
-"READTEXT",
-"WRITETEXT",
-"GETFPAREGS",
-"SETFPAREGS",
-""
+ /* 0 */ "TRACEME", "PEEKTEXT", "PEEKDATA", "PEEKUSR",
+ /* 4 */ "POKETEXT", "POKEDATA", "POKEUSR", "CONT",
+ /* 8 */ "KILL", "SINGLESTEP", "SUNATTACH", "SUNDETACH",
+ /* 12 */ "GETREGS", "SETREGS", "GETFPREGS", "SETFPREGS",
+ /* 16 */ "READDATA", "WRITEDATA", "READTEXT", "WRITETEXT",
+ /* 20 */ "GETFPAREGS", "SETFPAREGS", "unknown", "unknown",
+ /* 24 */ "SYSCALL", ""
};
#endif
@@ -134,7 +118,7 @@ asmlinkage void do_ptrace(struct pt_regs *regs)
{
char *s;
- if ((request > 0) && (request < 21))
+ if ((request >= 0) && (request <= 24))
s = pt_rq [request];
else
s = "unknown";
diff --git a/arch/sparc64/kernel/sparc64_ksyms.c b/arch/sparc64/kernel/sparc64_ksyms.c
index e0fac33482a8..5ada28c9939c 100644
--- a/arch/sparc64/kernel/sparc64_ksyms.c
+++ b/arch/sparc64/kernel/sparc64_ksyms.c
@@ -372,6 +372,10 @@ void VISenter(void);
/* RAID code needs this */
EXPORT_SYMBOL_NOVERS(VISenter);
+extern void batten_down_hatches(void);
+/* for input/keybdev */
+EXPORT_SYMBOL(batten_down_hatches);
+
#ifdef CONFIG_DEBUG_BUGVERBOSE
EXPORT_SYMBOL(do_BUG);
#endif
diff --git a/arch/sparc64/kernel/sys_sunos32.c b/arch/sparc64/kernel/sys_sunos32.c
index f0e4a4b1e60c..c364a7a481db 100644
--- a/arch/sparc64/kernel/sys_sunos32.c
+++ b/arch/sparc64/kernel/sys_sunos32.c
@@ -1198,8 +1198,8 @@ static inline int check_nonblock(int ret, int fd)
return ret;
}
-extern asmlinkage int sys_read(unsigned int fd, char *buf, unsigned long count);
-extern asmlinkage int sys_write(unsigned int fd, char *buf, unsigned long count);
+extern asmlinkage ssize_t sys_read(unsigned int fd, char *buf, unsigned long count);
+extern asmlinkage ssize_t sys_write(unsigned int fd, char *buf, unsigned long count);
extern asmlinkage int sys_recv(int fd, void *ubuf, size_t size, unsigned flags);
extern asmlinkage int sys_send(int fd, void *buff, size_t len, unsigned flags);
extern asmlinkage int sys_accept(int fd, struct sockaddr *sa, int *addrlen);
diff --git a/drivers/video/aty/mach64_gx.c b/drivers/video/aty/mach64_gx.c
index 86d7d7eec69a..25ea5837a03a 100644
--- a/drivers/video/aty/mach64_gx.c
+++ b/drivers/video/aty/mach64_gx.c
@@ -5,6 +5,7 @@
#include <linux/delay.h>
#include <linux/fb.h>
+#include <linux/sched.h>
#include <asm/io.h>
diff --git a/include/asm-sparc64/bitops.h b/include/asm-sparc64/bitops.h
index ac5e20e78d5e..40af670f7eef 100644
--- a/include/asm-sparc64/bitops.h
+++ b/include/asm-sparc64/bitops.h
@@ -10,9 +10,9 @@
#include <linux/compiler.h>
#include <asm/byteorder.h>
-extern long ___test_and_set_bit(unsigned long nr, volatile void *addr);
-extern long ___test_and_clear_bit(unsigned long nr, volatile void *addr);
-extern long ___test_and_change_bit(unsigned long nr, volatile void *addr);
+extern long ___test_and_set_bit(unsigned long nr, volatile unsigned long *addr);
+extern long ___test_and_clear_bit(unsigned long nr, volatile unsigned long *addr);
+extern long ___test_and_change_bit(unsigned long nr, volatile unsigned long *addr);
#define test_and_set_bit(nr,addr) ({___test_and_set_bit(nr,addr)!=0;})
#define test_and_clear_bit(nr,addr) ({___test_and_clear_bit(nr,addr)!=0;})
@@ -22,52 +22,64 @@ extern long ___test_and_change_bit(unsigned long nr, volatile void *addr);
#define change_bit(nr,addr) ((void)___test_and_change_bit(nr,addr))
/* "non-atomic" versions... */
-#define __set_bit(X,Y) \
-do { unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- *__m |= (1UL << (__nr & 63)); \
-} while (0)
-#define __clear_bit(X,Y) \
-do { unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- *__m &= ~(1UL << (__nr & 63)); \
-} while (0)
-#define __change_bit(X,Y) \
-do { unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- *__m ^= (1UL << (__nr & 63)); \
-} while (0)
-#define __test_and_set_bit(X,Y) \
-({ unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- long __old = *__m; \
- long __mask = (1UL << (__nr & 63)); \
- *__m = (__old | __mask); \
- ((__old & __mask) != 0); \
-})
-#define __test_and_clear_bit(X,Y) \
-({ unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- long __old = *__m; \
- long __mask = (1UL << (__nr & 63)); \
- *__m = (__old & ~__mask); \
- ((__old & __mask) != 0); \
-})
-#define __test_and_change_bit(X,Y) \
-({ unsigned long __nr = (X); \
- long *__m = ((long *) (Y)) + (__nr >> 6); \
- long __old = *__m; \
- long __mask = (1UL << (__nr & 63)); \
- *__m = (__old ^ __mask); \
- ((__old & __mask) != 0); \
-})
+
+static __inline__ void __set_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+
+ *m |= (1UL << (nr & 63));
+}
+
+static __inline__ void __clear_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+
+ *m &= ~(1UL << (nr & 63));
+}
+
+static __inline__ void __change_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+
+ *m ^= (1UL << (nr & 63));
+}
+
+static __inline__ int __test_and_set_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+ long old = *m;
+ long mask = (1UL << (nr & 63));
+
+ *m = (old | mask);
+ return ((old & mask) != 0);
+}
+
+static __inline__ int __test_and_clear_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+ long old = *m;
+ long mask = (1UL << (nr & 63));
+
+ *m = (old & ~mask);
+ return ((old & mask) != 0);
+}
+
+static __inline__ int __test_and_change_bit(int nr, volatile unsigned long *addr)
+{
+ volatile unsigned long *m = addr + (nr >> 6);
+ long old = *m;
+ long mask = (1UL << (nr & 63));
+
+ *m = (old ^ mask);
+ return ((old & mask) != 0);
+}
#define smp_mb__before_clear_bit() do { } while(0)
#define smp_mb__after_clear_bit() do { } while(0)
-static __inline__ int test_bit(int nr, __const__ void *addr)
+static __inline__ int test_bit(int nr, __const__ volatile unsigned long *addr)
{
- return (1UL & (((__const__ long *) addr)[nr >> 6] >> (nr & 63))) != 0UL;
+ return (1UL & ((addr)[nr >> 6] >> (nr & 63))) != 0UL;
}
/* The easy/cheese version for now. */
@@ -177,9 +189,9 @@ static __inline__ unsigned int hweight8(unsigned int w)
* @offset: The bitnumber to start searching at
* @size: The maximum size to search
*/
-static __inline__ unsigned long find_next_bit(void *addr, unsigned long size, unsigned long offset)
+static __inline__ unsigned long find_next_bit(unsigned long *addr, unsigned long size, unsigned long offset)
{
- unsigned long *p = ((unsigned long *) addr) + (offset >> 6);
+ unsigned long *p = addr + (offset >> 6);
unsigned long result = offset & ~63UL;
unsigned long tmp;
@@ -231,9 +243,9 @@ found_middle:
* on Linus's ALPHA routines, which are pretty portable BTW.
*/
-static __inline__ unsigned long find_next_zero_bit(void *addr, unsigned long size, unsigned long offset)
+static __inline__ unsigned long find_next_zero_bit(unsigned long *addr, unsigned long size, unsigned long offset)
{
- unsigned long *p = ((unsigned long *) addr) + (offset >> 6);
+ unsigned long *p = addr + (offset >> 6);
unsigned long result = offset & ~63UL;
unsigned long tmp;
@@ -272,15 +284,15 @@ found_middle:
#define find_first_zero_bit(addr, size) \
find_next_zero_bit((addr), (size), 0)
-extern long ___test_and_set_le_bit(int nr, volatile void *addr);
-extern long ___test_and_clear_le_bit(int nr, volatile void *addr);
+extern long ___test_and_set_le_bit(int nr, volatile unsigned long *addr);
+extern long ___test_and_clear_le_bit(int nr, volatile unsigned long *addr);
#define test_and_set_le_bit(nr,addr) ({___test_and_set_le_bit(nr,addr)!=0;})
#define test_and_clear_le_bit(nr,addr) ({___test_and_clear_le_bit(nr,addr)!=0;})
#define set_le_bit(nr,addr) ((void)___test_and_set_le_bit(nr,addr))
#define clear_le_bit(nr,addr) ((void)___test_and_clear_le_bit(nr,addr))
-static __inline__ int test_le_bit(int nr, __const__ void * addr)
+static __inline__ int test_le_bit(int nr, __const__ unsigned long * addr)
{
int mask;
__const__ unsigned char *ADDR = (__const__ unsigned char *) addr;
@@ -293,9 +305,9 @@ static __inline__ int test_le_bit(int nr, __const__ void * addr)
#define find_first_zero_le_bit(addr, size) \
find_next_zero_le_bit((addr), (size), 0)
-static __inline__ unsigned long find_next_zero_le_bit(void *addr, unsigned long size, unsigned long offset)
+static __inline__ unsigned long find_next_zero_le_bit(unsigned long *addr, unsigned long size, unsigned long offset)
{
- unsigned long *p = ((unsigned long *) addr) + (offset >> 6);
+ unsigned long *p = addr + (offset >> 6);
unsigned long result = offset & ~63UL;
unsigned long tmp;
@@ -332,18 +344,22 @@ found_middle:
#ifdef __KERNEL__
-#define ext2_set_bit test_and_set_le_bit
-#define ext2_clear_bit test_and_clear_le_bit
-#define ext2_test_bit test_le_bit
-#define ext2_find_first_zero_bit find_first_zero_le_bit
-#define ext2_find_next_zero_bit find_next_zero_le_bit
+#define ext2_set_bit(nr,addr) test_and_set_le_bit((nr),(unsigned long *)(addr))
+#define ext2_clear_bit(nr,addr) test_and_clear_le_bit((nr),(unsigned long *)(addr))
+#define ext2_test_bit(nr,addr) test_le_bit((nr),(unsigned long *)(addr))
+#define ext2_find_first_zero_bit(addr, size) \
+ find_first_zero_le_bit((unsigned long *)(addr), (size))
+#define ext2_find_next_zero_bit(addr, size, off) \
+ find_next_zero_le_bit((unsigned long *)(addr), (size), (off))
/* Bitmap functions for the minix filesystem. */
-#define minix_test_and_set_bit(nr,addr) test_and_set_bit(nr,addr)
-#define minix_set_bit(nr,addr) set_bit(nr,addr)
-#define minix_test_and_clear_bit(nr,addr) test_and_clear_bit(nr,addr)
-#define minix_test_bit(nr,addr) test_bit(nr,addr)
-#define minix_find_first_zero_bit(addr,size) find_first_zero_bit(addr,size)
+#define minix_test_and_set_bit(nr,addr) test_and_set_bit((nr),(unsigned long *)(addr))
+#define minix_set_bit(nr,addr) set_bit((nr),(unsigned long *)(addr))
+#define minix_test_and_clear_bit(nr,addr) \
+ test_and_clear_bit((nr),(unsigned long *)(addr))
+#define minix_test_bit(nr,addr) test_bit((nr),(unsigned long *)(addr))
+#define minix_find_first_zero_bit(addr,size) \
+ find_first_zero_bit((unsigned long *)(addr),(size))
#endif /* __KERNEL__ */
diff --git a/include/asm-sparc64/visasm.h b/include/asm-sparc64/visasm.h
index 1d12a5025a7c..55e92117cd35 100644
--- a/include/asm-sparc64/visasm.h
+++ b/include/asm-sparc64/visasm.h
@@ -10,8 +10,6 @@
#include <asm/pstate.h>
#include <asm/ptrace.h>
-#define AOFF_task_fpregs (((ASIZ_task) + (64 - 1)) & ~(64 - 1))
-
/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc */
#define VISEntry \
diff --git a/include/math-emu/op-common.h b/include/math-emu/op-common.h
index 7b0206384cff..8c54bf6b956c 100644
--- a/include/math-emu/op-common.h
+++ b/include/math-emu/op-common.h
@@ -765,23 +765,25 @@ do { \
do { \
if (r) \
{ \
+ unsigned rtype ur_; \
X##_c = FP_CLS_NORMAL; \
\
if ((X##_s = (r < 0))) \
r = -r; \
\
+ ur_ = (unsigned rtype) r; \
if (rsize <= _FP_W_TYPE_SIZE) \
- __FP_CLZ(X##_e, r); \
+ __FP_CLZ(X##_e, ur_); \
else \
- __FP_CLZ_2(X##_e, (_FP_W_TYPE)(r >> _FP_W_TYPE_SIZE), \
- (_FP_W_TYPE)r); \
+ __FP_CLZ_2(X##_e, (_FP_W_TYPE)(ur_ >> _FP_W_TYPE_SIZE), \
+ (_FP_W_TYPE)ur_); \
if (rsize < _FP_W_TYPE_SIZE) \
X##_e -= (_FP_W_TYPE_SIZE - rsize); \
X##_e = rsize - X##_e - 1; \
\
if (_FP_FRACBITS_##fs < rsize && _FP_WFRACBITS_##fs < X##_e) \
- __FP_FRAC_SRS_1(r, (X##_e - _FP_WFRACBITS_##fs + 1), rsize); \
- _FP_FRAC_DISASSEMBLE_##wc(X, ((unsigned rtype)r), rsize); \
+ __FP_FRAC_SRS_1(ur_, (X##_e - _FP_WFRACBITS_##fs + 1), rsize);\
+ _FP_FRAC_DISASSEMBLE_##wc(X, ur_, rsize); \
if ((_FP_WFRACBITS_##fs - X##_e - 1) > 0) \
_FP_FRAC_SLL_##wc(X, (_FP_WFRACBITS_##fs - X##_e - 1)); \
} \