Index: sys/lib/libunwind/Makefile.inc
===================================================================
RCS file: /home/netbsd/src/sys/lib/libunwind/Makefile.inc,v
retrieving revision 1.12
diff -p -u -r1.12 Makefile.inc
--- sys/lib/libunwind/Makefile.inc	17 Nov 2019 22:53:33 -0000	1.12
+++ sys/lib/libunwind/Makefile.inc	30 Apr 2021 12:21:53 -0000
@@ -14,6 +14,8 @@ COPTS.libunwind.cxx+=	-Wno-old-style-cas
 CPPFLAGS.libunwind.cxx+=-I${NETBSDSRCDIR}/sys/lib/libunwind
 
 .if ${LIBC_MACHINE_CPU} == "arm"
-COPTS.libunwind.cxx+=	${${ACTIVE_CC} == "gcc":? -mfpu=vfp3 :}
+.if ${MKSOFTFLOAT} != "yes"
+COPTS.libunwind.cxx+=	${${ACTIVE_CC} == "gcc":? -mgeneral-regs-only :}
+.endif
 AFLAGS.unwind_registers.S+=	${${ACTIVE_CC} == "clang":? -mfpu=vfp3 :}
 .endif
Index: external/gpl3/gcc/dist/gcc/config/arm/arm.c
===================================================================
RCS file: /home/netbsd/src/external/gpl3/gcc/dist/gcc/config/arm/arm.c,v
retrieving revision 1.11
diff -p -u -r1.11 arm.c
--- external/gpl3/gcc/dist/gcc/config/arm/arm.c	11 Apr 2021 00:02:13 -0000	1.11
+++ external/gpl3/gcc/dist/gcc/config/arm/arm.c	30 Apr 2021 03:47:33 -0000
@@ -6471,11 +6471,10 @@ aapcs_vfp_is_call_or_return_candidate (e
   if (!use_vfp_abi (pcs_variant, ARM_NUM_REGS (new_mode) > 1))
     return false;
 
-  *base_mode = new_mode;
-
   if (TARGET_GENERAL_REGS_ONLY)
-    error ("argument of type %qT not permitted with -mgeneral-regs-only",
-	   type);
+    return false;
+
+  *base_mode = new_mode;
 
   return true;
 }
Index: external/gpl3/gcc.old/dist/gcc/config/arm/arm.c
===================================================================
RCS file: /home/netbsd/src/external/gpl3/gcc.old/dist/gcc/config/arm/arm.c,v
retrieving revision 1.12
diff -p -u -r1.12 arm.c
--- external/gpl3/gcc.old/dist/gcc/config/arm/arm.c	9 Apr 2021 23:14:27 -0000	1.12
+++ external/gpl3/gcc.old/dist/gcc/config/arm/arm.c	30 Apr 2021 03:53:47 -0000
@@ -6148,11 +6148,10 @@ aapcs_vfp_is_call_or_return_candidate (e
   if (!use_vfp_abi (pcs_variant, ARM_NUM_REGS (new_mode) > 1))
     return false;
 
-  *base_mode = new_mode;
-
   if (TARGET_GENERAL_REGS_ONLY)
-    error ("argument of type %qT not permitted with -mgeneral-regs-only",
-	   type);
+    return false;
+
+  *base_mode = new_mode;
 
   return true;
 }