b5666f7039
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>
32 lines
901 B
C
32 lines
901 B
C
/*
|
|
* Copyright (C) 2005 Stephen Rothwell IBM Corp.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version
|
|
* 2 of the License, or (at your option) any later version.
|
|
*/
|
|
#include <asm/mmu.h>
|
|
#include <asm/page.h>
|
|
#include <asm/iseries/lpar_map.h>
|
|
|
|
const struct LparMap __attribute__((__section__(".text"))) xLparMap = {
|
|
.xNumberEsids = HvEsidsToMap,
|
|
.xNumberRanges = HvRangesToMap,
|
|
.xSegmentTableOffs = STAB0_PAGE,
|
|
|
|
.xEsids = {
|
|
{ .xKernelEsid = GET_ESID(PAGE_OFFSET),
|
|
.xKernelVsid = KERNEL_VSID(PAGE_OFFSET), },
|
|
{ .xKernelEsid = GET_ESID(VMALLOCBASE),
|
|
.xKernelVsid = KERNEL_VSID(VMALLOCBASE), },
|
|
},
|
|
|
|
.xRanges = {
|
|
{ .xPages = HvPagesToMap,
|
|
.xOffset = 0,
|
|
.xVPN = KERNEL_VSID(PAGE_OFFSET) << (SID_SHIFT - HW_PAGE_SHIFT),
|
|
},
|
|
},
|
|
};
|