mirror of https://gitee.com/openkylin/linux.git
[MIPS] Make __pa() aware of XKPHYS/CKSEG0 address mix for 64 bit kernels
During early boot mem init, some configs couldn't use __pa() to convert virtual into physical addresses. Specially for 64 bit kernel cases when CONFIG_BUILD_ELF64=n. This patch make __pa() work for _all_ configs and thus make CPHYSADDR() useless. Signed-off-by: Franck Bui-Huu <fbuihuu@gmail.com> Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
99e3b942c6
commit
620a4802be
|
@ -136,8 +136,13 @@ typedef struct { unsigned long pgprot; } pgprot_t;
|
|||
/* to align the pointer to the (next) page boundary */
|
||||
#define PAGE_ALIGN(addr) (((addr) + PAGE_SIZE - 1) & PAGE_MASK)
|
||||
|
||||
#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
|
||||
#define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET))
|
||||
#if defined(CONFIG_64BIT) && !defined(CONFIG_BUILD_ELF64)
|
||||
#define __pa_page_offset(x) ((unsigned long)(x) < CKSEG0 ? PAGE_OFFSET : CKSEG0)
|
||||
#else
|
||||
#define __pa_page_offset(x) PAGE_OFFSET
|
||||
#endif
|
||||
#define __pa(x) ((unsigned long)(x) - __pa_page_offset(x))
|
||||
#define __va(x) ((void *)((unsigned long)(x) + PAGE_OFFSET))
|
||||
|
||||
#define pfn_to_kaddr(pfn) __va((pfn) << PAGE_SHIFT)
|
||||
|
||||
|
|
Loading…
Reference in New Issue