tree e1c503d81ce23d1ac7d50897bb2b190db09ace5d
parent aed31351941aa990fb0865c186565a589c56d3fe
author Michael Ellerman <[EMAIL PROTECTED]> Wed, 03 Aug 2005 20:21:23 +1000
committer Paul Mackerras <[EMAIL PROTECTED]> Mon, 29 Aug 2005 10:53:35 +1000

[PATCH] ppc64: Remove PTRRELOC() from msChunks code

The msChunks code was written to work on pSeries, but now it's only used on
iSeries. This means there's no need to do PTRRELOC anymore, so remove it all.

A few places were getting "extern reloc_offset()" from abs_addr.h, move it
into system.h instead.

Signed-off-by: Michael Ellerman <[EMAIL PROTECTED]>
Signed-off-by: Paul Mackerras <[EMAIL PROTECTED]>

 arch/ppc64/kernel/LparData.c |   10 +---------
 include/asm-ppc64/abs_addr.h |   36 ++++++++++--------------------------
 include/asm-ppc64/system.h   |    2 ++
 3 files changed, 13 insertions(+), 35 deletions(-)

diff --git a/arch/ppc64/kernel/LparData.c b/arch/ppc64/kernel/LparData.c
--- a/arch/ppc64/kernel/LparData.c
+++ b/arch/ppc64/kernel/LparData.c
@@ -229,24 +229,16 @@ struct ItVpdAreas itVpdAreas = {
 struct msChunks msChunks;
 EXPORT_SYMBOL(msChunks);
 
-/* Depending on whether this is called from iSeries or pSeries setup
- * code, the location of the msChunks struct may or may not have
- * to be reloc'd, so we force the caller to do that for us by passing
- * in a pointer to the structure.
- */
 unsigned long
 msChunks_alloc(unsigned long mem, unsigned long num_chunks, unsigned long 
chunk_size)
 {
-       unsigned long offset = reloc_offset();
-       struct msChunks *_msChunks = PTRRELOC(&msChunks);
-
        _msChunks->num_chunks  = num_chunks;
        _msChunks->chunk_size  = chunk_size;
        _msChunks->chunk_shift = __ilog2(chunk_size);
        _msChunks->chunk_mask  = (1UL<<_msChunks->chunk_shift)-1;
 
        mem = _ALIGN(mem, sizeof(msChunks_entry));
-       _msChunks->abs = (msChunks_entry *)(mem + offset);
+       _msChunks->abs = (msChunks_entry *)mem;
        mem += num_chunks * sizeof(msChunks_entry);
 
        return mem;
diff --git a/include/asm-ppc64/abs_addr.h b/include/asm-ppc64/abs_addr.h
--- a/include/asm-ppc64/abs_addr.h
+++ b/include/asm-ppc64/abs_addr.h
@@ -29,46 +29,30 @@ struct msChunks {
 extern struct msChunks msChunks;
 
 extern unsigned long msChunks_alloc(unsigned long, unsigned long, unsigned 
long);
-extern unsigned long reloc_offset(void);
 
 #ifdef CONFIG_MSCHUNKS
 
-static inline unsigned long
-chunk_to_addr(unsigned long chunk)
+static inline unsigned long chunk_to_addr(unsigned long chunk)
 {
-       unsigned long offset = reloc_offset();
-       struct msChunks *_msChunks = PTRRELOC(&msChunks);
-
-       return chunk << _msChunks->chunk_shift;
+       return chunk << msChunks.chunk_shift;
 }
 
-static inline unsigned long
-addr_to_chunk(unsigned long addr)
+static inline unsigned long addr_to_chunk(unsigned long addr)
 {
-       unsigned long offset = reloc_offset();
-       struct msChunks *_msChunks = PTRRELOC(&msChunks);
-
-       return addr >> _msChunks->chunk_shift;
+       return addr >> msChunks.chunk_shift;
 }
 
-static inline unsigned long
-chunk_offset(unsigned long addr)
+static inline unsigned long chunk_offset(unsigned long addr)
 {
-       unsigned long offset = reloc_offset();
-       struct msChunks *_msChunks = PTRRELOC(&msChunks);
-
-       return addr & _msChunks->chunk_mask;
+       return addr & msChunks.chunk_mask;
 }
 
-static inline unsigned long
-abs_chunk(unsigned long pchunk)
+static inline unsigned long abs_chunk(unsigned long pchunk)
 {
-       unsigned long offset = reloc_offset();
-       struct msChunks *_msChunks = PTRRELOC(&msChunks);
-       if ( pchunk >= _msChunks->num_chunks ) {
+       if (pchunk >= msChunks.num_chunks)
                return pchunk;
-       }
-       return PTRRELOC(_msChunks->abs)[pchunk];
+
+       return msChunks.abs[pchunk];
 }
 
 /* A macro so it can take pointers or unsigned long. */
diff --git a/include/asm-ppc64/system.h b/include/asm-ppc64/system.h
--- a/include/asm-ppc64/system.h
+++ b/include/asm-ppc64/system.h
@@ -302,5 +302,7 @@ __cmpxchg(volatile void *ptr, unsigned l
 
 #define arch_align_stack(x) (x)
 
+extern unsigned long reloc_offset(void);
+
 #endif /* __KERNEL__ */
 #endif
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to