From 08b219921f7f4430fe66391ed8e3302b4fd049f1 Mon Sep 17 00:00:00 2001 From: Iain Sandoe Date: Thu, 27 Jun 2019 19:08:16 +0000 Subject: [PATCH] [Darwin, PPC] Allow the user to override the use of hard float in kexts. The default for the kernel is soft-float, however a user writing a kernel extension might want to make use of hard float. This change makes " -mkernel -mhard-float " work as expected. 2019-06-27 Iain Sandoe * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour user-specified float mode choice for kernel mode code. From-SVN: r272760 --- gcc/ChangeLog | 5 +++++ gcc/config/rs6000/rs6000.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c0432a95433..4b739e39c8b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-06-27 Iain Sandoe + + * config/rs6000/rs6000.c (darwin_rs6000_override_options): Honour + user-specified float mode choice for kernel mode code. + 2019-06-27 Iain Sandoe * config/rs6000/darwin.h (ENDFILE_SPEC): Correct whitespace in the diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index fbff6bdb0a5..5e806736c42 100644 --- a/gcc/config/rs6000/rs6000.c +++ b/gcc/config/rs6000/rs6000.c @@ -3430,7 +3430,10 @@ darwin_rs6000_override_options (void) if (flag_mkernel) { rs6000_default_long_calls = 1; - rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; + + /* Allow a kext author to do -mkernel -mhard-float. */ + if (! (rs6000_isa_flags_explicit & OPTION_MASK_SOFT_FLOAT)) + rs6000_isa_flags |= OPTION_MASK_SOFT_FLOAT; } /* Make -m64 imply -maltivec. Darwin's 64-bit ABI includes -- 2.30.2