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;
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. */