summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@home.transmeta.com>2002-11-19 16:53:00 -0800
committerLinus Torvalds <torvalds@home.transmeta.com>2002-11-19 16:53:00 -0800
commit8f79cdb7227c2aeaeb11d12ea70c73f444778695 (patch)
tree63337f940a8fb31c1dcfcf80d63d1f8fa7309d10 /include
parentde5bd36f7695fae088f899f81e2be84eb3e62314 (diff)
parente7b3456554970603f4c8e72c086301b66211412e (diff)
Merge bk://ppc.bkbits.net/for-linus-ppc
into home.transmeta.com:/home/torvalds/v2.5/linux
Diffstat (limited to 'include')
-rw-r--r--include/asm-ppc/atomic.h11
-rw-r--r--include/asm-ppc/hardirq.h2
-rw-r--r--include/asm-ppc/module.h37
-rw-r--r--include/asm-ppc/page.h13
-rw-r--r--include/asm-ppc/processor.h60
5 files changed, 52 insertions, 71 deletions
diff --git a/include/asm-ppc/atomic.h b/include/asm-ppc/atomic.h
index e541fd274241..e9c091d591bf 100644
--- a/include/asm-ppc/atomic.h
+++ b/include/asm-ppc/atomic.h
@@ -17,8 +17,10 @@ typedef struct { volatile int counter; } atomic_t;
extern void atomic_clear_mask(unsigned long mask, unsigned long *addr);
#ifdef CONFIG_SMP
+#define SMP_SYNC "sync"
#define SMP_ISYNC "\n\tisync"
#else
+#define SMP_SYNC ""
#define SMP_ISYNC
#endif
@@ -192,10 +194,11 @@ static __inline__ int atomic_dec_if_positive(atomic_t *v)
return t;
}
-#define smp_mb__before_atomic_dec() smp_mb()
-#define smp_mb__after_atomic_dec() smp_mb()
-#define smp_mb__before_atomic_inc() smp_mb()
-#define smp_mb__after_atomic_inc() smp_mb()
+#define __MB __asm__ __volatile__ (SMP_SYNC : : : "memory")
+#define smp_mb__before_atomic_dec() __MB
+#define smp_mb__after_atomic_dec() __MB
+#define smp_mb__before_atomic_inc() __MB
+#define smp_mb__after_atomic_inc() __MB
#endif /* __KERNEL__ */
#endif /* _ASM_PPC_ATOMIC_H_ */
diff --git a/include/asm-ppc/hardirq.h b/include/asm-ppc/hardirq.h
index 3138ad56ec18..c96e72a0235e 100644
--- a/include/asm-ppc/hardirq.h
+++ b/include/asm-ppc/hardirq.h
@@ -3,7 +3,7 @@
#define __ASM_HARDIRQ_H
#include <linux/config.h>
-#include <asm/smp.h>
+#include <linux/cache.h>
/* The __last_jiffy_stamp field is needed to ensure that no decrementer
* interrupt is lost on SMP machines. Since on most CPUs it is in the same
diff --git a/include/asm-ppc/module.h b/include/asm-ppc/module.h
index 43ddf7c6aaab..7d75a3e3e2ee 100644
--- a/include/asm-ppc/module.h
+++ b/include/asm-ppc/module.h
@@ -1,12 +1,33 @@
#ifndef _ASM_PPC_MODULE_H
#define _ASM_PPC_MODULE_H
-/*
- * This file contains the PPC architecture specific module code.
- */
-
-#define module_map(x) vmalloc(x)
-#define module_unmap(x) vfree(x)
-#define module_arch_init(x) (0)
-#define arch_init_modules(x) do { } while (0)
+/* Module stuff for PPC. (C) 2001 Rusty Russell */
+
+/* Thanks to Paul M for explaining this.
+
+ PPC can only do rel jumps += 32MB, and often the kernel and other
+ modules are furthur away than this. So, we jump to a table of
+ trampolines attached to the module (the Procedure Linkage Table)
+ whenever that happens.
+*/
+
+struct ppc_plt_entry
+{
+ /* 16 byte jump instruction sequence (4 instructions) */
+ unsigned int jump[4];
+};
+
+struct mod_arch_specific
+{
+ /* How much of the core is actually taken up with core (then
+ we know the rest is for the PLT */
+ unsigned int core_plt_offset;
+
+ /* Same for init */
+ unsigned int init_plt_offset;
+};
+
+#define Elf_Shdr Elf32_Shdr
+#define Elf_Sym Elf32_Sym
+#define Elf_Ehdr Elf32_Ehdr
#endif /* _ASM_PPC_MODULE_H */
diff --git a/include/asm-ppc/page.h b/include/asm-ppc/page.h
index 07fcedee5912..4834d006adb6 100644
--- a/include/asm-ppc/page.h
+++ b/include/asm-ppc/page.h
@@ -14,19 +14,8 @@
#define KERNELBASE PAGE_OFFSET
#ifndef __ASSEMBLY__
-#include <asm/system.h> /* for xmon definition */
+#include <asm/processor.h> /* for BUG definition */
-#ifdef CONFIG_XMON
-#define BUG() do { \
- printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
- xmon(0); \
-} while (0)
-#else
-#define BUG() do { \
- printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
- __asm__ __volatile__(".long 0x0"); \
-} while (0)
-#endif
#define PAGE_BUG(page) do { BUG(); } while (0)
#define STRICT_MM_TYPECHECKS
diff --git a/include/asm-ppc/processor.h b/include/asm-ppc/processor.h
index cd08cd136e32..cd7e330c1eb1 100644
--- a/include/asm-ppc/processor.h
+++ b/include/asm-ppc/processor.h
@@ -519,47 +519,6 @@
#define PVR_MAJ(pvr) (((pvr) >> 4) & 0xF) /* Major revision field */
#define PVR_MIN(pvr) (((pvr) >> 0) & 0xF) /* Minor revision field */
-/* Processor Version Numbers */
-
-#define PVR_403GA 0x00200000
-#define PVR_403GB 0x00200100
-#define PVR_403GC 0x00200200
-#define PVR_403GCX 0x00201400
-#define PVR_405GP 0x40110000
-#define PVR_STB03XXX 0x40310000
-#define PVR_NP405H 0x41410000
-#define PVR_NP405L 0x41610000
-#define PVR_601 0x00010000
-#define PVR_602 0x00050000
-#define PVR_603 0x00030000
-#define PVR_603e 0x00060000
-#define PVR_603ev 0x00070000
-#define PVR_603r 0x00071000
-#define PVR_604 0x00040000
-#define PVR_604e 0x00090000
-#define PVR_604r 0x000A0000
-#define PVR_620 0x00140000
-#define PVR_740 0x00080000
-#define PVR_750 PVR_740
-#define PVR_740P 0x10080000
-#define PVR_750P PVR_740P
-#define PVR_7400 0x000C0000
-#define PVR_7410 0x800C0000
-#define PVR_7450 0x80000000
-/*
- * For the 8xx processors, all of them report the same PVR family for
- * the PowerPC core. The various versions of these processors must be
- * differentiated by the version number in the Communication Processor
- * Module (CPM).
- */
-#define PVR_821 0x00500000
-#define PVR_823 PVR_821
-#define PVR_850 PVR_821
-#define PVR_860 PVR_821
-#define PVR_8240 0x00810100
-#define PVR_8245 0x80811014
-#define PVR_8260 PVR_8240
-
/* We only need to define a new _MACH_xxx for machines which are part of
* a configuration which supports more than one type of different machine.
* This is currently limited to CONFIG_ALL_PPC and CHRP/PReP/PMac. -- Tom
@@ -690,11 +649,7 @@ extern struct task_struct *last_task_used_altivec;
* as soon as I get around to remapping the io areas with the BATs
* to match the mac we can raise this. -- Cort
*/
-#ifdef CONFIG_TASK_SIZE_BOOL
-#define TASK_SIZE CONFIG_TASK_SIZE
-#else
-#define TASK_SIZE (0x80000000UL)
-#endif
+#define TASK_SIZE (CONFIG_TASK_SIZE)
/* This decides where the kernel will search for a free chunk of vm
* space during mmap's.
@@ -788,6 +743,19 @@ extern inline void prefetchw(const void *x)
#define spin_lock_prefetch(x) prefetchw(x)
+#ifdef CONFIG_XMON
+extern void xmon(struct pt_regs *);
+#define BUG() do { \
+ printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+ xmon(0); \
+} while (0)
+#else
+#define BUG() do { \
+ printk("kernel BUG at %s:%d!\n", __FILE__, __LINE__); \
+ __asm__ __volatile__(".long 0x0"); \
+} while (0)
+#endif
+
#endif /* !__ASSEMBLY__ */
#endif /* __ASM_PPC_PROCESSOR_H */