patch-2.4.20 linux-2.4.20/include/asm-mips64/system.h
Next file: linux-2.4.20/include/asm-mips64/termios.h
Previous file: linux-2.4.20/include/asm-mips64/stackframe.h
Back to the patch index
Back to the overall index
- Lines: 102
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/include/asm-mips64/system.h
- Orig date:
Fri Aug 2 17:39:45 2002
diff -urN linux-2.4.19/include/asm-mips64/system.h linux-2.4.20/include/asm-mips64/system.h
@@ -12,9 +12,12 @@
#include <linux/config.h>
#include <asm/sgidefs.h>
-#include <asm/ptrace.h>
+
#include <linux/kernel.h>
+#include <asm/addrspace.h>
+#include <asm/ptrace.h>
+
__asm__ (
".macro\t__sti\n\t"
".set\tpush\n\t"
@@ -96,7 +99,7 @@
"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\tpop\n\t"
+ ".set\tpop\n\t"
".endm");
#define __save_and_cli(x) \
@@ -161,20 +164,37 @@
#define local_irq_disable() __cli()
#define local_irq_enable() __sti()
-/*
- * These are probably defined overly paranoid ...
- */
-#define mb() \
-__asm__ __volatile__( \
- "# prevent instructions being moved around\n\t" \
- ".set\tnoreorder\n\t" \
- "sync\n\t" \
- ".set\treorder" \
- : /* no output */ \
- : /* no input */ \
- : "memory")
-#define rmb() mb()
-#define wmb() mb()
+#define __sync() \
+ __asm__ __volatile__( \
+ ".set push\n\t" \
+ ".set noreorder\n\t" \
+ "sync\n\t" \
+ ".set pop" \
+ : /* no output */ \
+ : /* no input */ \
+ : "memory")
+
+#define fast_wmb() __sync()
+#define fast_rmb() __sync()
+#define fast_mb() __sync()
+#define fast_iob() \
+ do { \
+ __sync(); \
+ __asm__ __volatile__( \
+ ".set push\n\t" \
+ ".set noreorder\n\t" \
+ "lw $0,%0\n\t" \
+ "nop\n\t" \
+ ".set pop" \
+ : /* no output */ \
+ : "m" (*(int *)KSEG1) \
+ : "memory"); \
+ } while (0)
+
+#define wmb() fast_wmb()
+#define rmb() fast_rmb()
+#define mb() fast_mb()
+#define iob() fast_iob()
#ifdef CONFIG_SMP
#define smp_mb() mb()
@@ -200,6 +220,8 @@
#define prepare_to_switch() do { } while(0)
+struct task_struct;
+
extern asmlinkage void lazy_fpu_switch(void *, void *);
extern asmlinkage void init_fpu(void);
extern asmlinkage void save_fp(struct task_struct *);
@@ -282,6 +304,16 @@
return x;
}
-extern void set_except_vector(int n, void *addr);
+extern void *set_except_vector(int n, void *addr);
+
+extern void __die(const char *, struct pt_regs *, const char *file,
+ const char *func, unsigned long line) __attribute__((noreturn));
+extern void __die_if_kernel(const char *, struct pt_regs *, const char *file,
+ const char *func, unsigned long line);
+
+#define die(msg, regs) \
+ __die(msg, regs, __FILE__ ":", __FUNCTION__, __LINE__)
+#define die_if_kernel(msg, regs) \
+ __die_if_kernel(msg, regs, __FILE__ ":", __FUNCTION__, __LINE__)
#endif /* _ASM_SYSTEM_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)