[OpenBIOS] [PATCH 3/4] ppc: Introduce load() macro for ppc64
Alexander Graf
agraf at suse.de
Mon Nov 1 22:10:00 CET 2010
On 01.11.2010, at 16:56, Andreas Färber wrote:
> When loading the fw_cfg address with just lis, addi sequence,
> we get the high address bits as 0xffffffff on ppc64.
>
> Use the full double word immediate load sequence on ppc64.
>
> Cc: Alexander Graf <agraf at suse.de>
> Signed-off-by: Andreas Färber <andreas.faerber at web.de>
> ---
> arch/ppc/qemu/start.S | 51 +++++++++++++++++++++++++++---------------------
> 1 files changed, 29 insertions(+), 22 deletions(-)
>
> diff --git a/arch/ppc/qemu/start.S b/arch/ppc/qemu/start.S
> index 443d668..0be69d9 100644
> --- a/arch/ppc/qemu/start.S
> +++ b/arch/ppc/qemu/start.S
> @@ -176,6 +176,24 @@
> #undef stl
> #undef ll
>
> +
> +#ifdef __powerpc64__
> +
> +#define load(D, x) \
> + lis (D), (x)@highest ; \
> + ori (D), (D), (x)@higher ; \
> + sldi (D), (D), 32 ; \
> + oris (D), (D), (x)@h ; \
> + ori (D), (D), (x)@l
> +
> +#else
> +
> +#define load(D, x) \
> + lis (D), HA(x) ; \
> + addi (D), (D), LO(x)
I would recommend to take the LOAD_REG_IMMEDIATE macro from Linux :). That makes the code more readable for someone who knows his way around the Linux code.
Alex
More information about the OpenBIOS
mailing list