[PATCH] powerpc: Separate usage of KERNELBASE and PAGE_OFFSET
This patch separates usage of KERNELBASE and PAGE_OFFSET. I haven't looked at any of the PPC32 code, if we ever want to support Kdump on PPC we'll have to do another audit, ditto for iSeries. This patch makes PAGE_OFFSET the constant, it'll always be 0xC * 1 gazillion for 64-bit. To get a physical address from a virtual one you subtract PAGE_OFFSET, _not_ KERNELBASE. KERNELBASE is the virtual address of the start of the kernel, it's often the same as PAGE_OFFSET, but _might not be_. If you want to know something's offset from the start of the kernel you should subtract KERNELBASE. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Paul Mackerras <paulus@samba.org>
This commit is contained in:
committed by
Paul Mackerras
parent
51fae6de24
commit
b5666f7039
@ -456,7 +456,7 @@ void __init htab_initialize(void)
|
||||
|
||||
/* create bolted the linear mapping in the hash table */
|
||||
for (i=0; i < lmb.memory.cnt; i++) {
|
||||
base = lmb.memory.region[i].base + KERNELBASE;
|
||||
base = (unsigned long)__va(lmb.memory.region[i].base);
|
||||
size = lmb.memory.region[i].size;
|
||||
|
||||
DBG("creating mapping for region: %lx : %lx\n", base, size);
|
||||
@ -498,8 +498,8 @@ void __init htab_initialize(void)
|
||||
* for either 4K or 16MB pages.
|
||||
*/
|
||||
if (tce_alloc_start) {
|
||||
tce_alloc_start += KERNELBASE;
|
||||
tce_alloc_end += KERNELBASE;
|
||||
tce_alloc_start = (unsigned long)__va(tce_alloc_start);
|
||||
tce_alloc_end = (unsigned long)__va(tce_alloc_end);
|
||||
|
||||
if (base + size >= tce_alloc_start)
|
||||
tce_alloc_start = base + size + 1;
|
||||
|
Reference in New Issue
Block a user