Patchwork [06/15] ARM: Make target_phys_addr_t 64 bits and physaddrs 40 bits

login
register
mail settings
Submitter Peter Maydell
Date July 12, 2012, 1:36 p.m.
Message ID <1342100216-1832-7-git-send-email-peter.maydell@linaro.org>
Download mbox | patch
Permalink /patch/170682/
State New
Headers show

Comments

Peter Maydell - July 12, 2012, 1:36 p.m.
Make target_phys_addr_t 64 bits for ARM targets, and set
TARGET_PHYS_ADDR_SPACE_BITS to 40.  This should have no effect for ARM
boards where physical addresses really are 32 bits (except perhaps a
slight performance hit on 32 bit hosts for system emulation) but allows
us to implement the Large Physical Address Extensions for Cortex-A15,
which mean 40 bit physical addresses.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 configure        |    2 +-
 target-arm/cpu.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Jan Kiszka - Sept. 5, 2012, 10:44 p.m.
On 2012-07-12 15:36, Peter Maydell wrote:
> Make target_phys_addr_t 64 bits for ARM targets, and set
> TARGET_PHYS_ADDR_SPACE_BITS to 40.  This should have no effect for ARM
> boards where physical addresses really are 32 bits (except perhaps a
> slight performance hit on 32 bit hosts for system emulation) but allows
> us to implement the Large Physical Address Extensions for Cortex-A15,
> which mean 40 bit physical addresses.
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>  configure        |    2 +-
>  target-arm/cpu.h |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/configure b/configure
> index 500fe24..32a8290 100755
> --- a/configure
> +++ b/configure
> @@ -3571,7 +3571,7 @@ case "$target_arch2" in
>      bflt="yes"
>      target_nptl="yes"
>      gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
> -    target_phys_bits=32
> +    target_phys_bits=64
>      target_llong_alignment=4
>      target_libs_softmmu="$fdt_libs"
>    ;;
> diff --git a/target-arm/cpu.h b/target-arm/cpu.h
> index 33afa18..aadfca0 100644
> --- a/target-arm/cpu.h
> +++ b/target-arm/cpu.h
> @@ -619,7 +619,7 @@ static inline bool cp_access_ok(CPUARMState *env,
>  #define TARGET_PAGE_BITS 10
>  #endif
>  
> -#define TARGET_PHYS_ADDR_SPACE_BITS 32
> +#define TARGET_PHYS_ADDR_SPACE_BITS 40
>  #define TARGET_VIRT_ADDR_SPACE_BITS 32
>  
>  static inline CPUARMState *cpu_init(const char *cpu_model)
> 

After this change, the Musicpal board no longer boots. The symptoms are
just like stealing its flash completely: u-boot fails to find the kernel
image in the flash partition. That makes me think we have some address
size related issues in pflash_cfi02. Any other spontaneous ideas where
to dig?

Jan

Patch

diff --git a/configure b/configure
index 500fe24..32a8290 100755
--- a/configure
+++ b/configure
@@ -3571,7 +3571,7 @@  case "$target_arch2" in
     bflt="yes"
     target_nptl="yes"
     gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
-    target_phys_bits=32
+    target_phys_bits=64
     target_llong_alignment=4
     target_libs_softmmu="$fdt_libs"
   ;;
diff --git a/target-arm/cpu.h b/target-arm/cpu.h
index 33afa18..aadfca0 100644
--- a/target-arm/cpu.h
+++ b/target-arm/cpu.h
@@ -619,7 +619,7 @@  static inline bool cp_access_ok(CPUARMState *env,
 #define TARGET_PAGE_BITS 10
 #endif
 
-#define TARGET_PHYS_ADDR_SPACE_BITS 32
+#define TARGET_PHYS_ADDR_SPACE_BITS 40
 #define TARGET_VIRT_ADDR_SPACE_BITS 32
 
 static inline CPUARMState *cpu_init(const char *cpu_model)