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([[]], [[]])],
|
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[]])],
|
||||||
[grub_cv_target_cc_soft_float="-mno-inline-float-divide -mno-inline-sqrt"], [])
|
[grub_cv_target_cc_soft_float="-mno-inline-float-divide -mno-inline-sqrt"], [])
|
||||||
fi
|
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
|
"-Xclang -msoft-float" "-msoft-float"; do
|
||||||
if test x"$grub_cv_target_cc_soft_float" != xno ; then
|
if test x"$grub_cv_target_cc_soft_float" != xno ; then
|
||||||
break
|
break
|
||||||
|
@ -711,7 +712,7 @@ if test x"$platform" != xemu ; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case x"$grub_cv_target_cc_soft_float" in
|
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
|
# A trick so that clang doesn't see it on link stаge
|
||||||
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $grub_cv_target_cc_soft_float"
|
TARGET_CPPFLAGS="$TARGET_CPPFLAGS $grub_cv_target_cc_soft_float"
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <grub/offsets.h>
|
#include <grub/offsets.h>
|
||||||
#include <grub/machine/memory.h>
|
#include <grub/machine/memory.h>
|
||||||
#include <grub/machine/kernel.h>
|
#include <grub/machine/kernel.h>
|
||||||
|
#include <grub/cpu/kernel.h>
|
||||||
#include <grub/offsets.h>
|
#include <grub/offsets.h>
|
||||||
|
|
||||||
#define BASE_ADDR 8
|
#define BASE_ADDR 8
|
||||||
|
@ -32,6 +33,7 @@
|
||||||
.globl __start, _start, start
|
.globl __start, _start, start
|
||||||
.set noreorder
|
.set noreorder
|
||||||
.set nomacro
|
.set nomacro
|
||||||
|
mips_attributes
|
||||||
__start:
|
__start:
|
||||||
_start:
|
_start:
|
||||||
start:
|
start:
|
||||||
|
|
|
@ -1,8 +1,10 @@
|
||||||
|
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
|
#include <grub/cpu/kernel.h>
|
||||||
|
|
||||||
.set noreorder
|
.set noreorder
|
||||||
.set nomacro
|
.set nomacro
|
||||||
|
mips_attributes
|
||||||
|
|
||||||
FUNCTION (grub_arch_sync_caches)
|
FUNCTION (grub_arch_sync_caches)
|
||||||
#include "cache_flush.S"
|
#include "cache_flush.S"
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#include <grub/offsets.h>
|
#include <grub/offsets.h>
|
||||||
#include <grub/machine/memory.h>
|
#include <grub/machine/memory.h>
|
||||||
#include <grub/machine/kernel.h>
|
#include <grub/machine/kernel.h>
|
||||||
|
#include <grub/cpu/kernel.h>
|
||||||
#include <grub/offsets.h>
|
#include <grub/offsets.h>
|
||||||
|
|
||||||
#define BASE_ADDR 8
|
#define BASE_ADDR 8
|
||||||
|
@ -28,6 +29,7 @@
|
||||||
.globl __start, _start, start
|
.globl __start, _start, start
|
||||||
.set noreorder
|
.set noreorder
|
||||||
.set nomacro
|
.set nomacro
|
||||||
|
mips_attributes
|
||||||
__start:
|
__start:
|
||||||
_start:
|
_start:
|
||||||
start:
|
start:
|
||||||
|
|
|
@ -17,11 +17,13 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
|
#include <grub/cpu/kernel.h>
|
||||||
|
|
||||||
.p2align 4 /* force 16-byte alignment */
|
.p2align 4 /* force 16-byte alignment */
|
||||||
|
|
||||||
.set noreorder
|
.set noreorder
|
||||||
.set nomacro
|
.set nomacro
|
||||||
|
mips_attributes
|
||||||
|
|
||||||
VARIABLE (grub_relocator_forward_start)
|
VARIABLE (grub_relocator_forward_start)
|
||||||
move $a0, $9
|
move $a0, $9
|
||||||
|
|
|
@ -21,4 +21,8 @@
|
||||||
|
|
||||||
#include <grub/symbol.h>
|
#include <grub/symbol.h>
|
||||||
|
|
||||||
|
#ifdef ASM_FILE
|
||||||
|
#define mips_attributes .gnu_attribute 4, 3
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* ! GRUB_KERNEL_MACHINE_HEADER */
|
#endif /* ! GRUB_KERNEL_MACHINE_HEADER */
|
||||||
|
|
Loading…
Reference in a new issue