summaryrefslogtreecommitdiffstats
path: root/include/asm-arm/system.h
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1999-06-22 23:05:57 +0000
committerRalf Baechle <ralf@linux-mips.org>1999-06-22 23:05:57 +0000
commit51d3b7814cdccef9188240fe0cbd8d97ff2c7470 (patch)
tree5cbb01d0323d4f63ade66bdf48ba4a91aaa6df16 /include/asm-arm/system.h
parent52273a23c9a84336b93a35e4847fc88fac7eb0e4 (diff)
Merge with Linux 2.3.7.
WARNING: 2.3.7 is known to eat filesystems for breakfast and little children for lunch, so if you try this on your machine make backups first ...
Diffstat (limited to 'include/asm-arm/system.h')
-rw-r--r--include/asm-arm/system.h31
1 files changed, 14 insertions, 17 deletions
diff --git a/include/asm-arm/system.h b/include/asm-arm/system.h
index 2874c4661..80252899d 100644
--- a/include/asm-arm/system.h
+++ b/include/asm-arm/system.h
@@ -35,7 +35,7 @@ extern unsigned int __machine_arch_type;
/*
* Sort out a definition for machine_arch_type
- * The rules basically are:
+ * The rules are:
* 1. If one architecture is selected, then all machine_is_xxx()
* are constant.
* 2. If two or more architectures are selected, then the selected
@@ -118,28 +118,16 @@ extern unsigned int __machine_arch_type;
#define machine_arch_type __machine_arch_type
#endif
-/*
- * task_struct isn't always declared - forward-declare it here.
- */
-struct task_struct;
-
#include <asm/proc-fns.h>
-extern void arm_malalignedptr(const char *, void *, volatile void *);
-extern void arm_invalidptr(const char *, int);
-
#define xchg(ptr,x) \
((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr))))
#define tas(ptr) (xchg((ptr),1))
-/*
- * switch_to(prev, next) should switch from task `prev' to `next'
- * `prev' will never be the same as `next'.
- *
- * `next' and `prev' should be struct task_struct, but it isn't always defined
- */
-#define switch_to(prev,next,last) do { last = processor._switch_to(prev,next); } while (0)
+extern void arm_malalignedptr(const char *, void *, volatile void *);
+extern void arm_invalidptr(const char *, int);
+extern asmlinkage void __backtrace(void);
/*
* Include processor dependent parts
@@ -152,7 +140,16 @@ extern void arm_invalidptr(const char *, int);
#define wmb() mb()
#define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t");
-extern asmlinkage void __backtrace(void);
+/*
+ * switch_to(prev, next) should switch from task `prev' to `next'
+ * `prev' will never be the same as `next'.
+ * The `mb' is to tell GCC not to cache `current' across this call.
+ */
+#define switch_to(prev,next,last) \
+ do { \
+ last = processor._switch_to(prev,next); \
+ mb(); \
+ } while (0)
#endif