mirror of https://gitee.com/openkylin/linux.git
powerpc/booke: Only use VIRT_PHYS_OFFSET on booke32
The way VIRT_PHYS_OFFSET is not correct on book3e-64, because it does not account for CONFIG_RELOCATABLE other than via the 32-bit-only virt_phys_offset. book3e-64 can (and if the comment about a GCC miscompilation is still relevant, should) use the normal ppc64 __va/__pa. At this point, only booke-32 will use VIRT_PHYS_OFFSET, so given the issues with its calculation, restrict its definition to booke-32. Signed-off-by: Scott Wood <scottwood@freescale.com>
This commit is contained in:
parent
567cf94dc7
commit
ffda09a994
|
@ -108,12 +108,13 @@ extern long long virt_phys_offset;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* See Description below for VIRT_PHYS_OFFSET */
|
/* See Description below for VIRT_PHYS_OFFSET */
|
||||||
#ifdef CONFIG_RELOCATABLE_PPC32
|
#if defined(CONFIG_PPC32) && defined(CONFIG_BOOKE)
|
||||||
|
#ifdef CONFIG_RELOCATABLE
|
||||||
#define VIRT_PHYS_OFFSET virt_phys_offset
|
#define VIRT_PHYS_OFFSET virt_phys_offset
|
||||||
#else
|
#else
|
||||||
#define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START)
|
#define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START)
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_PPC64
|
#ifdef CONFIG_PPC64
|
||||||
#define MEMORY_START 0UL
|
#define MEMORY_START 0UL
|
||||||
|
@ -206,7 +207,7 @@ extern long long virt_phys_offset;
|
||||||
* On non-Book-E PPC64 PAGE_OFFSET and MEMORY_START are constants so use
|
* On non-Book-E PPC64 PAGE_OFFSET and MEMORY_START are constants so use
|
||||||
* the other definitions for __va & __pa.
|
* the other definitions for __va & __pa.
|
||||||
*/
|
*/
|
||||||
#ifdef CONFIG_BOOKE
|
#if defined(CONFIG_PPC32) && defined(CONFIG_BOOKE)
|
||||||
#define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) + VIRT_PHYS_OFFSET))
|
#define __va(x) ((void *)(unsigned long)((phys_addr_t)(x) + VIRT_PHYS_OFFSET))
|
||||||
#define __pa(x) ((unsigned long)(x) - VIRT_PHYS_OFFSET)
|
#define __pa(x) ((unsigned long)(x) - VIRT_PHYS_OFFSET)
|
||||||
#else
|
#else
|
||||||
|
|
Loading…
Reference in New Issue