Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ffda09a9 authored by Scott Wood's avatar Scott Wood
Browse files

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: default avatarScott Wood <scottwood@freescale.com>
parent 567cf94d
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -108,12 +108,13 @@ extern long long virt_phys_offset;
#endif

/* 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
#else
#define VIRT_PHYS_OFFSET (KERNELBASE - PHYSICAL_START)
#endif

#endif

#ifdef CONFIG_PPC64
#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
 * 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 __pa(x) ((unsigned long)(x) - VIRT_PHYS_OFFSET)
#else