mirror of
https://github.com/torvalds/linux.git
synced 2024-09-23 16:33:16 +00:00
[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 <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
parent
aed3135194
commit
38e85dc180
|
@ -229,24 +229,16 @@ struct ItVpdAreas itVpdAreas = {
|
||||||
struct msChunks msChunks;
|
struct msChunks msChunks;
|
||||||
EXPORT_SYMBOL(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
|
unsigned long
|
||||||
msChunks_alloc(unsigned long mem, unsigned long num_chunks, unsigned long chunk_size)
|
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->num_chunks = num_chunks;
|
||||||
_msChunks->chunk_size = chunk_size;
|
_msChunks->chunk_size = chunk_size;
|
||||||
_msChunks->chunk_shift = __ilog2(chunk_size);
|
_msChunks->chunk_shift = __ilog2(chunk_size);
|
||||||
_msChunks->chunk_mask = (1UL<<_msChunks->chunk_shift)-1;
|
_msChunks->chunk_mask = (1UL<<_msChunks->chunk_shift)-1;
|
||||||
|
|
||||||
mem = _ALIGN(mem, sizeof(msChunks_entry));
|
mem = _ALIGN(mem, sizeof(msChunks_entry));
|
||||||
_msChunks->abs = (msChunks_entry *)(mem + offset);
|
_msChunks->abs = (msChunks_entry *)mem;
|
||||||
mem += num_chunks * sizeof(msChunks_entry);
|
mem += num_chunks * sizeof(msChunks_entry);
|
||||||
|
|
||||||
return mem;
|
return mem;
|
||||||
|
|
|
@ -29,46 +29,30 @@ struct msChunks {
|
||||||
extern struct msChunks msChunks;
|
extern struct msChunks msChunks;
|
||||||
|
|
||||||
extern unsigned long msChunks_alloc(unsigned long, unsigned long, unsigned long);
|
extern unsigned long msChunks_alloc(unsigned long, unsigned long, unsigned long);
|
||||||
extern unsigned long reloc_offset(void);
|
|
||||||
|
|
||||||
#ifdef CONFIG_MSCHUNKS
|
#ifdef CONFIG_MSCHUNKS
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long chunk_to_addr(unsigned long chunk)
|
||||||
chunk_to_addr(unsigned long chunk)
|
|
||||||
{
|
{
|
||||||
unsigned long offset = reloc_offset();
|
return chunk << msChunks.chunk_shift;
|
||||||
struct msChunks *_msChunks = PTRRELOC(&msChunks);
|
|
||||||
|
|
||||||
return chunk << _msChunks->chunk_shift;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long addr_to_chunk(unsigned long addr)
|
||||||
addr_to_chunk(unsigned long addr)
|
|
||||||
{
|
{
|
||||||
unsigned long offset = reloc_offset();
|
return addr >> msChunks.chunk_shift;
|
||||||
struct msChunks *_msChunks = PTRRELOC(&msChunks);
|
|
||||||
|
|
||||||
return addr >> _msChunks->chunk_shift;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long chunk_offset(unsigned long addr)
|
||||||
chunk_offset(unsigned long addr)
|
|
||||||
{
|
{
|
||||||
unsigned long offset = reloc_offset();
|
return addr & msChunks.chunk_mask;
|
||||||
struct msChunks *_msChunks = PTRRELOC(&msChunks);
|
|
||||||
|
|
||||||
return addr & _msChunks->chunk_mask;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline unsigned long
|
static inline unsigned long abs_chunk(unsigned long pchunk)
|
||||||
abs_chunk(unsigned long pchunk)
|
|
||||||
{
|
{
|
||||||
unsigned long offset = reloc_offset();
|
if (pchunk >= msChunks.num_chunks)
|
||||||
struct msChunks *_msChunks = PTRRELOC(&msChunks);
|
|
||||||
if ( pchunk >= _msChunks->num_chunks ) {
|
|
||||||
return pchunk;
|
return pchunk;
|
||||||
}
|
|
||||||
return PTRRELOC(_msChunks->abs)[pchunk];
|
return msChunks.abs[pchunk];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* A macro so it can take pointers or unsigned long. */
|
/* A macro so it can take pointers or unsigned long. */
|
||||||
|
|
|
@ -302,5 +302,7 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)
|
||||||
|
|
||||||
#define arch_align_stack(x) (x)
|
#define arch_align_stack(x) (x)
|
||||||
|
|
||||||
|
extern unsigned long reloc_offset(void);
|
||||||
|
|
||||||
#endif /* __KERNEL__ */
|
#endif /* __KERNEL__ */
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue
Block a user