From: Paul M. <le...@us...> - 2002-05-28 20:25:41
|
Update of /cvsroot/linux-mips/linux/include/asm-mips64 In directory usw-pr-cvs1:/tmp/cvs-serv7651/include/asm-mips64 Modified Files: bitops.h pgtable.h system.h Added Files: atomic.h Log Message: Partial sync with OSS. Index: bitops.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips64/bitops.h,v retrieving revision 1.7 retrieving revision 1.8 diff -u -d -r1.7 -r1.8 --- bitops.h 5 Feb 2002 17:07:49 -0000 1.7 +++ bitops.h 28 May 2002 20:25:38 -0000 1.8 @@ -9,6 +9,7 @@ #ifndef _ASM_BITOPS_H #define _ASM_BITOPS_H +#include <linux/config.h> #include <linux/types.h> #include <linux/byteorder/swab.h> /* sigh ... */ @@ -84,8 +85,8 @@ : "ir" (~(1UL << (nr & 0x3f))), "m" (*m)); } -#define smp_mb__before_clear_bit() barrier() -#define smp_mb__after_clear_bit() barrier() +#define smp_mb__before_clear_bit() smp_mb() +#define smp_mb__after_clear_bit() smp_mb() /* * change_bit - Toggle a bit in memory @@ -147,6 +148,9 @@ "scd\t%2, %1\n\t" "beqz\t%2, 1b\n\t" " and\t%2, %0, %3\n\t" +#ifdef CONFIG_SMP + "sync\n\t" +#endif ".set\treorder" : "=&r" (temp), "=m" (*m), "=&r" (res) : "r" (1UL << (nr & 0x3f)), "m" (*m) @@ -199,6 +203,9 @@ "scd\t%2, %1\n\t" "beqz\t%2, 1b\n\t" " and\t%2, %0, %3\n\t" +#ifdef CONFIG_SMP + "sync\n\t" +#endif ".set\treorder" : "=&r" (temp), "=m" (*m), "=&r" (res) : "r" (1UL << (nr & 0x3f)), "m" (*m) @@ -250,6 +257,9 @@ "scd\t%2, %1\n\t" "beqz\t%2, 1b\n\t" " and\t%2, %0, %3\n\t" +#ifdef CONFIG_SMP + "sync\n\t" +#endif ".set\treorder" : "=&r" (temp), "=m" (*m), "=&r" (res) : "r" (1UL << (nr & 0x3f)), "m" (*m) Index: pgtable.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips64/pgtable.h,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- pgtable.h 18 Mar 2002 22:47:15 -0000 1.13 +++ pgtable.h 28 May 2002 20:25:38 -0000 1.14 @@ -74,12 +74,22 @@ #else +extern void (*_flush_icache_all)(void); +extern void (*_flush_icache_range)(unsigned long start, unsigned long end); +extern void (*_flush_icache_page)(struct vm_area_struct *vma, struct page *page); + #define flush_cache_mm(mm) _flush_cache_mm(mm) #define flush_cache_range(mm,start,end) _flush_cache_range(mm,start,end) #define flush_cache_page(vma,page) _flush_cache_page(vma, page) #define flush_page_to_ram(page) _flush_page_to_ram(page) #define flush_icache_range(start, end) _flush_icache_range(start, end) #define flush_icache_page(vma, page) _flush_icache_page(vma, page) +#ifdef CONFIG_VTAG_ICACHE +#define flush_icache_all() _flush_icache_all() +#else +#define flush_icache_all() do { } while(0) +#endif + #endif /* !CONFIG_CPU_R10000 */ @@ -566,6 +576,12 @@ #define pgtable_cache_init() do { } while (0) #include <asm-generic/pgtable.h> + +/* + * We provide our own get_unmapped area to cope with the virtual aliasing + * constraints placed on us by the cache architecture. + */ +#define HAVE_ARCH_UNMAPPED_AREA #endif /* !defined (_LANGUAGE_ASSEMBLY) */ Index: system.h =================================================================== RCS file: /cvsroot/linux-mips/linux/include/asm-mips64/system.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -d -r1.9 -r1.10 --- system.h 5 Feb 2002 17:22:20 -0000 1.9 +++ system.h 28 May 2002 20:25:38 -0000 1.10 @@ -11,10 +11,8 @@ #define _ASM_SYSTEM_H #include <linux/config.h> - #include <asm/sgidefs.h> #include <asm/ptrace.h> - #include <linux/kernel.h> __asm__ ( @@ -117,9 +115,9 @@ "xori\t$1, 1\n\t" "or\t\\flags, $1\n\t" "mtc0\t\\flags, $12\n\t" - "nop\n\t" - "nop\n\t" - "nop\n\t" + "sll\t$0, $0, 1\t\t\t# nop\n\t" + "sll\t$0, $0, 1\t\t\t# nop\n\t" + "sll\t$0, $0, 1\t\t\t# nop\n\t" ".set\tat\n\t" ".set\treorder\n\t" ".endm"); @@ -194,19 +192,18 @@ #define set_wmb(var, value) \ do { var = value; wmb(); } while (0) -#if !defined (_LANGUAGE_ASSEMBLY) /* * switch_to(n) should switch tasks to task nr n, first * checking that n isn't the current task, in which case it does nothing. */ extern asmlinkage void *resume(void *last, void *next); -#endif /* !defined (_LANGUAGE_ASSEMBLY) */ #define prepare_to_switch() do { } while(0) extern asmlinkage void lazy_fpu_switch(void *, void *); extern asmlinkage void init_fpu(void); -extern asmlinkage void save_fp(void *); +extern asmlinkage void save_fp(struct task_struct *); +extern asmlinkage void restore_fp(struct task_struct *); #ifdef CONFIG_SMP #define SWITCH_DO_LAZY_FPU \ |