|
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 \
|