summaryrefslogtreecommitdiff
path: root/include/asm-ppc64
diff options
context:
space:
mode:
authorDavid Gibson <david@gibson.dropbear.id.au>2004-07-01 20:29:27 -0700
committerLinus Torvalds <torvalds@ppc970.osdl.org>2004-07-01 20:29:27 -0700
commit78c39c9f64ed94eb1414aeecbcc82f62153c7ccd (patch)
tree46ebc9fa5fa3940c08148d96000303539affb9a3 /include/asm-ppc64
parent004a3668794a9ed1349b3b786987871100fc8389 (diff)
[PATCH] ppc64: remove RTAS arguments from PACA
This patch removes the RTAS arguments structure on ppc64 from the PACA. The args have to be in the RMO, but since we have a global spinlock for RTAS anyway, there's no reason to have a separate copy of the args per-CPU. This patch replaces the PACA field with a single instance in the global rtas structure. The one exception is for the rtas_stop_self() call, which can't take the lock, because it never returns. But it has a fixed set of arguments, so we can use another global instance which is initialized at boot. This lets us remove rtas.h from paca.h, which substantially reduces overall #include hairiness (because paca.h is now, as it wants to be, a nice low-level structure-defining header which relies on very little and can safely be included almost anywhere). Although it does add some noise to the patch, because a bunch of places relied on the indirect inclusion of rtas.h, or even more indirect inclusions (see the hunks applying to eeh.h and current.h!). Cc: Paul Mackerras <paulus@samba.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'include/asm-ppc64')
-rw-r--r--include/asm-ppc64/current.h2
-rw-r--r--include/asm-ppc64/eeh.h1
-rw-r--r--include/asm-ppc64/paca.h4
-rw-r--r--include/asm-ppc64/rtas.h7
4 files changed, 5 insertions, 9 deletions
diff --git a/include/asm-ppc64/current.h b/include/asm-ppc64/current.h
index 24ea6e1ab6e8..94a49c2588f1 100644
--- a/include/asm-ppc64/current.h
+++ b/include/asm-ppc64/current.h
@@ -10,8 +10,6 @@
* 2 of the License, or (at your option) any later version.
*/
-#include <asm/thread_info.h>
-
#define get_current() (get_paca()->xCurrent)
#define current get_current()
diff --git a/include/asm-ppc64/eeh.h b/include/asm-ppc64/eeh.h
index 3ca700cb04bc..d5e44bf36c7b 100644
--- a/include/asm-ppc64/eeh.h
+++ b/include/asm-ppc64/eeh.h
@@ -24,6 +24,7 @@
#include <linux/init.h>
struct pci_dev;
+struct device_node;
/* I/O addresses are converted to EEH "tokens" such that a driver will cause
* a bad page fault if the address is used directly (i.e. these addresses are
diff --git a/include/asm-ppc64/paca.h b/include/asm-ppc64/paca.h
index 218ab7178fc3..06e2208e5e43 100644
--- a/include/asm-ppc64/paca.h
+++ b/include/asm-ppc64/paca.h
@@ -29,7 +29,6 @@
#include <asm/iSeries/ItLpPaca.h>
#include <asm/iSeries/ItLpRegSave.h>
#include <asm/iSeries/ItLpQueue.h>
-#include <asm/rtas.h>
#include <asm/mmu.h>
#include <asm/processor.h>
@@ -122,10 +121,9 @@ struct paca_struct {
* CACHE_LINE_17-18 0x0800 - 0x08FF Reserved
*=====================================================================================
*/
- struct rtas_args xRtas; /* Per processor RTAS struct */
u64 xR1; /* r1 save for RTAS calls */
u64 xSavedMsr; /* Old msr saved here by HvCall */
- u8 rsvd5[256-16-sizeof(struct rtas_args)];
+ u8 rsvd5[256-16];
/*=====================================================================================
* CACHE_LINE_19-30 0x0900 - 0x0EFF Reserved
diff --git a/include/asm-ppc64/rtas.h b/include/asm-ppc64/rtas.h
index 4ce9bddc62a2..d596ec5b4c9f 100644
--- a/include/asm-ppc64/rtas.h
+++ b/include/asm-ppc64/rtas.h
@@ -51,18 +51,17 @@ struct rtas_args {
u32 nargs;
u32 nret;
rtas_arg_t args[16];
-#if 0
- spinlock_t lock;
-#endif
rtas_arg_t *rets; /* Pointer to return values in args[]. */
};
+extern struct rtas_args rtas_stop_self_args;
+
struct rtas_t {
unsigned long entry; /* physical address pointer */
unsigned long base; /* physical address pointer */
unsigned long size;
spinlock_t lock;
-
+ struct rtas_args args;
struct device_node *dev; /* virtual address pointer */
};