On Wed, Apr 11, 2007 at 03:30:00AM -0500, Milton Miller wrote:
> 
> The @ha relocation is supposed to account for the @l relocation being
> a signed quantity by adding 1 if the msb of @l is set.
> 
> The trick of adding 0x8000 stolen from the linux kernel file
> arch/powerpc/kernel/module_64.c which credits binutils.
> 
> Signed-off-by: Milton Miller <[EMAIL PROTECTED]>
>
Acked-by: Mohan Kumar M <[EMAIL PROTECTED]>


Cross checked with PPC64 ELF ABI also.
 
> --- 
> This relocation is used in v2wrap.S to hold and release the slave cpus.
> Without this fix the memory location may be 64k off the initialized variable
> which is checked against 0.
> 
> 
> --- kexec-tools-testing/kexec/arch/ppc64/kexec-elf-rel-ppc64.c.orig   
> 2007-04-10 22:29:59.000000000 -0500
> +++ kexec-tools-testing/kexec/arch/ppc64/kexec-elf-rel-ppc64.c        
> 2007-04-10 22:29:59.000000000 -0500
> @@ -97,7 +97,7 @@ void machine_apply_elf_rel(struct mem_eh
>               break;
> 
>       case R_PPC64_ADDR16_HA:
> -             *(uint16_t *)location = ((value>>16)  & 0xffff);
> +             *(uint16_t *)location = (((value+0x8000)>>16)  & 0xffff);
>               break;
> 
>       case R_PPC64_ADDR16_HIGHEST:
_______________________________________________
fastboot mailing list
[EMAIL PROTECTED]
https://lists.linux-foundation.org/mailman/listinfo/fastboot

Reply via email to