Enable multilib builds for contemporary PRU core versions (AM335x and
later), and older versions present in AM18xx.

gcc/ChangeLog:

        * config.gcc: Include pru/t-multilib.
        * config/pru/pru.h (MULTILIB_DEFAULTS): Define.
        * config/pru/t-multilib: New file.

Signed-off-by: Dimitar Dimitrov <dimi...@dinux.eu>
---
 gcc/config.gcc            |  2 +-
 gcc/config/pru/pru.h      |  3 +++
 gcc/config/pru/t-multilib | 29 +++++++++++++++++++++++++++++
 3 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 gcc/config/pru/t-multilib

diff --git a/gcc/config.gcc b/gcc/config.gcc
index 517df40e5de..db813a7b561 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -3207,7 +3207,7 @@ powerpcle-*-eabi*)
        ;;
 pru*-*-*)
        tm_file="elfos.h newlib-stdint.h ${tm_file}"
-       tmake_file="${tmake_file} pru/t-pru"
+       tmake_file="${tmake_file} pru/t-multilib pru/t-pru"
        extra_objs="pru-pragma.o pru-passes.o"
        use_gcc_stdint=wrap
        ;;
diff --git a/gcc/config/pru/pru.h b/gcc/config/pru/pru.h
index 6c0719b5c1d..9d547ed3bad 100644
--- a/gcc/config/pru/pru.h
+++ b/gcc/config/pru/pru.h
@@ -65,6 +65,9 @@
 #undef  ENDFILE_SPEC
 #define ENDFILE_SPEC "%{!mabi=ti:-lgloss} "
 
+#undef  MULTILIB_DEFAULTS
+#define MULTILIB_DEFAULTS { "mloop", "mmul", "mfillzero" }
+
 /* TI ABI mandates that ELF symbols do not start with any prefix.  */
 #undef USER_LABEL_PREFIX
 #define USER_LABEL_PREFIX ""
diff --git a/gcc/config/pru/t-multilib b/gcc/config/pru/t-multilib
new file mode 100644
index 00000000000..1e3c2b8abaa
--- /dev/null
+++ b/gcc/config/pru/t-multilib
@@ -0,0 +1,29 @@
+# Copyright (C) 2025 Free Software Foundation, Inc.
+#
+# This file is part of GCC.
+#
+# GCC is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation; either version 3, or (at your option) any later
+# version.
+#
+# GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+# for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with GCC; see the file COPYING3.  If not see
+# <http://www.gnu.org/licenses/>.
+
+MULTILIB_OPTIONS   =
+MULTILIB_OPTIONS  += mloop/mno-loop
+MULTILIB_OPTIONS  += mmul/mno-mul
+MULTILIB_OPTIONS  += mfillzero/mno-fillzero
+
+# Build two variants:
+#   - Newer PRU core versions, present in AM335x and later.
+#   - Older PRU core versions, present in AM18xx.
+MULTILIB_REQUIRED  =
+MULTILIB_REQUIRED += mloop/mmul/mfillzero
+MULTILIB_REQUIRED += mno-loop/mno-mul/mno-fillzero
-- 
2.50.1

Reply via email to