Skip to content
  • Yuri Tikhonov's avatar
    FPU POST: fix warnings when building with 2.18 binutils · ce82ff05
    Yuri Tikhonov authored
    
    
    When compile u-boot with the 2.18 binutils the following
    warning messages for each object file in post/lib_ppc/fpu/ is
    produced at the linking stage:
    
    post/libpost.a(acc1.o) uses hard float, u-boot uses soft-float
    ...
    
    This is because of the fact that, in general, the soft-float and
    hard-float ABIs are incompatible; the 2.18 binutils do checking
    of the Tag_GNU_Power_ABI_FP attribute of the files to be linked, and
    produce the worning like above if these are not compatible.
    
    The incompatibility of ABIs is concerned only the float values:
    e.g. the soft-float ABI assumes the float argument passing in the
    pair of rX registers, and the hard-float ABI assumes passing of
    the float argument in the fX register. When we don't pass the float
    arguments between the functions compiled with different floatness,
    then such an application will work correctly.
    This is the case for the FPU POST: u-boot (compiled with soft-float)
    doesn't pass to (and doesn't get from) the FPU POST functions any
    floats; there are no functions exported from the post/lib_ppc/fpu/
    objects which would work with float parameters/returns too. So, we
    can reassure the linker not to worry about the difference in ABI
    attributes of linking files just by setting the 'soft-float'
    attribute for the objects in post/lib_ppc/fpu. And this patch does
    this.
    
    Also, to avoid passing both soft- and hard-float options in CFLAGS
    when compiling the files from post/lib_ppc/fpu (which is OK, but
    looks rather dirty) this patch removes the soft-float string from
    CFLAGS in post/lib_ppc/fpu/Makefile.
    
    Signed-off-by: default avatarYuri Tikhonov <yur@emcraft.com>
    ce82ff05