aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitar Dimitrov <dimitar@dinux.eu>2025-08-16 21:52:52 +0300
committerDimitar Dimitrov <dimitar@dinux.eu>2025-08-21 21:43:05 +0300
commit352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2 (patch)
treed0c1c4ef1122363d6c5955b011b42aff1400769b
parent7968ba80b99fa3809628fe71753909edc7ee3186 (diff)
downloadgcc-352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2.zip
gcc-352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2.tar.gz
gcc-352cc9b57b2cfd62e37c962b6d2a83ed6d4827d2.tar.bz2
pru: Define multilib for different core variants
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 <dimitar@dinux.eu>
-rw-r--r--gcc/config.gcc2
-rw-r--r--gcc/config/pru/pru.h3
-rw-r--r--gcc/config/pru/t-multilib29
3 files changed, 33 insertions, 1 deletions
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 517df40..db813a7 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 6c0719b..9d547ed 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 0000000..1e3c2b8
--- /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