diff options
| author | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-05-09 22:21:34 -0700 |
|---|---|---|
| committer | Linus Torvalds <torvalds@penguin.transmeta.com> | 2002-05-09 22:21:34 -0700 |
| commit | a0f895bbbed36afd56159acb02751eb5ad6ff2a0 (patch) | |
| tree | cdec7ac79532d8f66f921f6766e2267e3c54a2ab | |
| parent | f38b18a0cbb7b7565c4177fe6d3f10d14a166a30 (diff) | |
| parent | fc83829c77072995279221719a0ba525cd9968ca (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.c | 32 | ||||
| -rw-r--r-- | arch/sparc/kernel/sys_sunos.c | 4 | ||||
| -rw-r--r-- | arch/sparc64/kernel/pci.c | 6 | ||||
| -rw-r--r-- | arch/sparc64/kernel/process.c | 7 | ||||
| -rw-r--r-- | arch/sparc64/kernel/ptrace.c | 32 | ||||
| -rw-r--r-- | arch/sparc64/kernel/sparc64_ksyms.c | 4 | ||||
| -rw-r--r-- | arch/sparc64/kernel/sys_sunos32.c | 4 | ||||
| -rw-r--r-- | drivers/video/aty/mach64_gx.c | 1 | ||||
| -rw-r--r-- | include/asm-sparc64/bitops.h | 142 | ||||
| -rw-r--r-- | include/asm-sparc64/visasm.h | 2 | ||||
| -rw-r--r-- | include/math-emu/op-common.h | 12 |
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)); \ } \ |
