mips: Fix soft-float handling.
Add -msoft-float alongside clang arguments to specify ABI. Specify ABI in asm files explicitly. This trigers asm warning due to gcc failing to propagate -msoft-float but it's tolerable.
This commit is contained in:
parent
7ea452a142
commit
6a4ecd276e
6 changed files with 16 additions and 3 deletions
|
@ -695,7 +695,8 @@ if test x"$platform" != xemu ; then
|
|||
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||
[grub_cv_target_cc_soft_float="-mno-inline-float-divide -mno-inline-sqrt"], [])
|
||||
fi
|
||||
for cand in "-Xclang -msoft-float -Xclang -no-implicit-float" \
|
||||
for cand in "-msoft-float -Xclang -msoft-float -Xclang -no-implicit-float" \
|
||||
"-Xclang -msoft-float -Xclang -no-implicit-float" \
|
||||
"-Xclang -msoft-float" "-msoft-float"; do
|
||||
if test x"$grub_cv_target_cc_soft_float" != xno ; then
|
||||
break
|
||||
|
@ -711,7 +712,7 @@ if test x"$platform" != xemu ; then
|
|||
fi
|
||||
|
||||
case x"$grub_cv_target_cc_soft_float" in
|
||||
x"-Xclang"*)
|
||||
x*"-Xclang"*)
|
||||
# A trick so that clang doesn't see it on link stаge
|
||||
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $grub_cv_target_cc_soft_float"
|
||||
;;
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <grub/offsets.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/cpu/kernel.h>
|
||||
#include <grub/offsets.h>
|
||||
|
||||
#define BASE_ADDR 8
|
||||
|
@ -32,6 +33,7 @@
|
|||
.globl __start, _start, start
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
mips_attributes
|
||||
__start:
|
||||
_start:
|
||||
start:
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/cpu/kernel.h>
|
||||
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
mips_attributes
|
||||
|
||||
FUNCTION (grub_arch_sync_caches)
|
||||
#include "cache_flush.S"
|
||||
|
@ -65,4 +67,4 @@ FUNCTION (grub_arch_sync_dma_caches)
|
|||
#endif
|
||||
sync_op
|
||||
|
||||
jr $ra
|
||||
jr $ra
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
#include <grub/offsets.h>
|
||||
#include <grub/machine/memory.h>
|
||||
#include <grub/machine/kernel.h>
|
||||
#include <grub/cpu/kernel.h>
|
||||
#include <grub/offsets.h>
|
||||
|
||||
#define BASE_ADDR 8
|
||||
|
@ -28,6 +29,7 @@
|
|||
.globl __start, _start, start
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
mips_attributes
|
||||
__start:
|
||||
_start:
|
||||
start:
|
||||
|
|
|
@ -17,11 +17,13 @@
|
|||
*/
|
||||
|
||||
#include <grub/symbol.h>
|
||||
#include <grub/cpu/kernel.h>
|
||||
|
||||
.p2align 4 /* force 16-byte alignment */
|
||||
|
||||
.set noreorder
|
||||
.set nomacro
|
||||
mips_attributes
|
||||
|
||||
VARIABLE (grub_relocator_forward_start)
|
||||
move $a0, $9
|
||||
|
|
|
@ -21,4 +21,8 @@
|
|||
|
||||
#include <grub/symbol.h>
|
||||
|
||||
#ifdef ASM_FILE
|
||||
#define mips_attributes .gnu_attribute 4, 3
|
||||
#endif
|
||||
|
||||
#endif /* ! GRUB_KERNEL_MACHINE_HEADER */
|
||||
|
|
Loading…
Reference in a new issue