summaryrefslogtreecommitdiffstats
path: root/include/asm-ppc64/abs_addr.h
diff options
context:
space:
mode:
authorMichael Ellerman2005-08-03 12:21:23 +0200
committerPaul Mackerras2005-08-29 02:53:35 +0200
commit34c8f6961fc601294a38c5bd5ca12131b2e52674 (patch)
tree98035e5581a0addfca935fa2d8afddfc7c56c631 /include/asm-ppc64/abs_addr.h
parent[PATCH] ppc64: Remove PTRRELOC() from msChunks code (diff)
downloadkernel-qcow2-linux-34c8f6961fc601294a38c5bd5ca12131b2e52674.tar.gz
kernel-qcow2-linux-34c8f6961fc601294a38c5bd5ca12131b2e52674.tar.xz
kernel-qcow2-linux-34c8f6961fc601294a38c5bd5ca12131b2e52674.zip
[PATCH] ppc64: msChunks cleanups
Chunks are 256KB, so use constants for the size/shift/mask, rather than getting them from the msChunks struct. The iSeries debugger (??) might still need access to the values in the msChunks struct, so we keep them around for now, but set them from the constant values. Replace msChunks_entry typedef with regular u32. Simplify msChunks_alloc() to manipulate klimit directly, rather than via a parameter. Move msChunks_alloc() and msChunks into iSeries_setup.c, as that's where they're used. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'include/asm-ppc64/abs_addr.h')
-rw-r--r--include/asm-ppc64/abs_addr.h15
1 files changed, 9 insertions, 6 deletions
diff --git a/include/asm-ppc64/abs_addr.h b/include/asm-ppc64/abs_addr.h
index 93dc63ed4f2f..2276567f133a 100644
--- a/include/asm-ppc64/abs_addr.h
+++ b/include/asm-ppc64/abs_addr.h
@@ -17,34 +17,37 @@
#include <asm/prom.h>
#include <asm/lmb.h>
-typedef u32 msChunks_entry;
struct msChunks {
unsigned long num_chunks;
unsigned long chunk_size;
unsigned long chunk_shift;
unsigned long chunk_mask;
- msChunks_entry *abs;
+ u32 *abs;
};
extern struct msChunks msChunks;
-extern unsigned long msChunks_alloc(unsigned long, unsigned long, unsigned long);
#ifdef CONFIG_MSCHUNKS
+/* Chunks are 256 KB */
+#define MSCHUNKS_CHUNK_SHIFT (18)
+#define MSCHUNKS_CHUNK_SIZE (1UL << MSCHUNKS_CHUNK_SHIFT)
+#define MSCHUNKS_OFFSET_MASK (MSCHUNKS_CHUNK_SIZE - 1)
+
static inline unsigned long chunk_to_addr(unsigned long chunk)
{
- return chunk << msChunks.chunk_shift;
+ return chunk << MSCHUNKS_CHUNK_SHIFT;
}
static inline unsigned long addr_to_chunk(unsigned long addr)
{
- return addr >> msChunks.chunk_shift;
+ return addr >> MSCHUNKS_CHUNK_SHIFT;
}
static inline unsigned long chunk_offset(unsigned long addr)
{
- return addr & msChunks.chunk_mask;
+ return addr & MSCHUNKS_OFFSET_MASK;
}
static inline unsigned long abs_chunk(unsigned long pchunk)