Port-m68k archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Intermediate step for new arch for lc040 compatibility
Hi,
Please see attached patch:
I've found it very hard to set the -mlcfix flag for gas(1) depending on the
caller. If it's gcc its pretty easy to set CFLAGS but not necessarily for
other programmes.
It was easier to make a toolchain where -mlcfix was the default ensuring
compatibility no matter which programme was calling gas(1).
The attached patch will make a toolchain where by -mlcfix is the default if -V
MKLC040COMPAT is passed to build.sh.
This is an intermediate step for a new arch where the flag can be set (say
m68klc).
Best regards and thank you for your consideration,
Nat
diff -r 9fc76abb7419 BUILDING
--- a/BUILDING Mon Apr 14 16:43:00 2025 +0000
+++ b/BUILDING Fri Apr 18 02:11:09 2025 +1000
@@ -259,20 +259,20 @@ CONFIGURATION
MKDEBUGTOOLS, MKDEPINCLUDES, MKDOC, MKDTB, MKDTC, MKDTRACE,
MKDYNAMICROOT, MKFIRMWARE, MKGCC, MKGCCCMDS, MKGDB, MKGROFF,
MKGROFFHTMLDOC, MKHESIOD, MKHOSTOBJ, MKHTML, MKIEEEFP, MKINET6,
- MKINFO, MKIPFILTER, MKISCSI, MKKERBEROS, MKKMOD, MKKYUA, MKLDAP,
- MKLIBCSANITIZER, MKLIBCXX, MKLIBSTDCXX, MKLINKLIB, MKLINT, MKLLVM,
- MKLLVMRT, MKLVM, MKMAKEMANDB, MKMAN, MKMANDOC, MKMANZ, MKMDNS,
- MKNLS, MKNOUVEAUFIRMWARE, MKNPF, MKNSD, MKOBJ, MKOBJDIRS, MKPAM,
- MKPCC, MKPF, MKPIC, MKPICINSTALL, MKPICLIB, MKPIE, MKPIGZGZIP,
- MKPOSTFIX, MKPROFILE, MKRADEONFIRMWARE, MKRELRO, MKREPRO,
- MKREPRO_TIMESTAMP, MKRUMP, MKSANITIZER, MKSHARE, MKSKEY, MKSLJIT,
- MKSOFTFLOAT, MKSTATICLIB, MKSTATICPIE, MKSTRIPIDENT, MKSTRIPSYM,
- MKTEGRAFIRMWARE, MKTPM, MKUNBOUND, MKUNPRIVED, MKUPDATE, MKX11,
- MKX11FONTS, MKX11MOTIF, MKXORG_SERVER, MKYP, MKZFS, NETBSDSRCDIR,
- NETBSD_OFFICIAL_RELEASE, NOCLEANDIR, NODISTRIBDIRS, NOINCLUDES,
- OBJMACHINE, RELEASEDIR, RUMPUSER_THREADS, RUMP_CURLWP, RUMP_DEBUG,
- RUMP_DIAGNOSTIC, RUMP_KTRACE, RUMP_LOCKDEBUG, RUMP_LOCKS_UP,
- RUMP_NBCOMPAT, RUMP_VIRTIF, RUMP_VNODE_LOCKDEBUG,
+ MKINFO, MKIPFILTER, MKISCSI, MKKERBEROS, MKKMOD, MKKYUA,
+ MKLC040COMPAT, MKLDAP, MKLIBCSANITIZER, MKLIBCXX, MKLIBSTDCXX,
+ MKLINKLIB, MKLINT, MKLLVM, MKLLVMRT, MKLVM, MKMAKEMANDB, MKMAN,
+ MKMANDOC, MKMANZ, MKMDNS, MKNLS, MKNOUVEAUFIRMWARE, MKNPF, MKNSD,
+ MKOBJ, MKOBJDIRS, MKPAM, MKPCC, MKPF, MKPIC, MKPICINSTALL, MKPICLIB,
+ MKPIE, MKPIGZGZIP, MKPOSTFIX, MKPROFILE, MKRADEONFIRMWARE, MKRELRO,
+ MKREPRO, MKREPRO_TIMESTAMP, MKRUMP, MKSANITIZER, MKSHARE, MKSKEY,
+ MKSLJIT, MKSOFTFLOAT, MKSTATICLIB, MKSTATICPIE, MKSTRIPIDENT,
+ MKSTRIPSYM, MKTEGRAFIRMWARE, MKTPM, MKUNBOUND, MKUNPRIVED, MKUPDATE,
+ MKX11, MKX11FONTS, MKX11MOTIF, MKXORG_SERVER, MKYP, MKZFS,
+ NETBSDSRCDIR, NETBSD_OFFICIAL_RELEASE, NOCLEANDIR, NODISTRIBDIRS,
+ NOINCLUDES, OBJMACHINE, RELEASEDIR, RUMPUSER_THREADS, RUMP_CURLWP,
+ RUMP_DEBUG, RUMP_DIAGNOSTIC, RUMP_KTRACE, RUMP_LOCKDEBUG,
+ RUMP_LOCKS_UP, RUMP_NBCOMPAT, RUMP_VIRTIF, RUMP_VNODE_LOCKDEBUG,
TOOLCHAIN_MISSING, TOOLDIR, USETOOLS, USE_FORT, USE_HESIOD,
USE_INET6, USE_JEMALLOC, USE_KERBEROS, USE_LDAP, USE_LIBCSANITIZER,
USE_PAM, USE_PIGZGZIP, USE_SANITIZER, USE_SKEY, USE_SSP,
diff -r 9fc76abb7419 doc/HACKS
--- a/doc/HACKS Mon Apr 14 16:43:00 2025 +0000
+++ b/doc/HACKS Fri Apr 18 02:11:09 2025 +1000
@@ -1040,11 +1040,15 @@ kcah
hack binutils: 68lc040 needs support for fpu emulation on some cpus.
cdate Thu Apr 3 11:52:14 UTC 2025
+mdate Tue Apr 15 00:01:00 UTC 2025
port m68k
who nat
-file external/gpl3/binutils/dist/gas/config/tc-m68k.c : 1.13
+file external/gpl3/binutils/dist/gas/config/tc-m68k.c : 1.14
descr Early buggy revisions of 68LC040 cpu cannot use fpu emulation without
some binutils supprt. Adding NOP before F-LINE instructions.
(PR port-mac68k/13078 and binutils PATCH request
- https://sourceware.org/pipermail/binutils/2025-March/140270.html)
+
+ Pass MKLC040COMPAT=yes to build.sh to make an lc040 compatable
+ toolchain to build userland and packages.
kcah
diff -r 9fc76abb7419 external/gpl3/binutils/dist/gas/config/tc-m68k.c
--- a/external/gpl3/binutils/dist/gas/config/tc-m68k.c Mon Apr 14 16:43:00 2025 +0000
+++ b/external/gpl3/binutils/dist/gas/config/tc-m68k.c Fri Apr 18 02:11:09 2025 +1000
@@ -74,7 +74,11 @@ int flag_want_pic;
static int flag_short_refs; /* -l option. */
static int flag_long_jumps; /* -S option. */
static int flag_keep_pcrel; /* --pcrel option. */
+#if LC040COMPAT
+static bool lcfix = true;
+#else
static bool lcfix = false;
+#endif
#ifdef REGISTER_PREFIX_OPTIONAL
int flag_reg_prefix_optional = REGISTER_PREFIX_OPTIONAL;
@@ -4281,7 +4285,7 @@ next:
m68k_ip (str);
- if (lcfix == true && hasnop == false &&
+ if (lcfix && !hasnop &&
(the_ins.opcode[0] & 0xf000) == 0xf000)
{
memset (&the_ins, '\0', sizeof (the_ins));
@@ -7476,6 +7480,8 @@ md_parse_option (int c, const char *arg)
;
else if (m68k_set_cpu (arg, 0, 1))
;
+ else if (startswith (arg, "no-lcfix"))
+ lcfix = false;
else if (startswith (arg, "lcfix"))
lcfix = true;
else
@@ -7579,8 +7585,20 @@ md_show_usage (FILE *stream)
fprintf (stream, _("\
-march=<arch> set architecture\n\
-mcpu=<cpu> set cpu [default %s]\n\
--mlcfix compatability with lc040 nop before f-line\n\
"), default_cpu);
+
+#if LC040COMPAT
+ fprintf (stream, _("\
+-mno-lcfix no compatability with lc040 nop before f-line\n\
+-mlcfix compatability with lc040 nop before f-line (Default)\n\
+"));
+#else
+ fprintf (stream, _("\
+-mno-lcfix no compatability with lc040 nop before f-line (Default)\n\
+-mlcfix compatability with lc040 nop before f-line\n\
+"));
+#endif
+
for (i = 0; m68k_extensions[i].name; i++)
fprintf (stream, _("\
-m[no-]%-16s enable/disable %s architecture extension\n\
diff -r 9fc76abb7419 external/gpl3/binutils/usr.bin/gas/Makefile
--- a/external/gpl3/binutils/usr.bin/gas/Makefile Mon Apr 14 16:43:00 2025 +0000
+++ b/external/gpl3/binutils/usr.bin/gas/Makefile Fri Apr 18 02:11:09 2025 +1000
@@ -4,6 +4,10 @@ CPPFLAGS+= -I${.CURDIR}/arch/${BINUTILS_
CPPFLAGS+= -I${DIST}/gas -I${DIST}/gas/config
CPPFLAGS+= -I${DIST}
+.if ${MKLC040COMPAT} != "no"
+CPPFLAGS+= -DLC040COMPAT
+.endif
+
.include "${.CURDIR}/../common/Makefile.inc"
.include "${.CURDIR}/arch/${BINUTILS_MACHINE_ARCH}/defs.mk"
diff -r 9fc76abb7419 share/man/man5/mk.conf.5
--- a/share/man/man5/mk.conf.5 Mon Apr 14 16:43:00 2025 +0000
+++ b/share/man/man5/mk.conf.5 Fri Apr 18 02:11:09 2025 +1000
@@ -1,6 +1,6 @@
.\" $NetBSD: mk.conf.5,v 1.111 2024/09/07 19:13:28 rillig Exp $
.\"
-.\" Copyright (c) 1999-2023 The NetBSD Foundation, Inc.
+.\" Copyright (c) 1999-2025 The NetBSD Foundation, Inc.
.\" All rights reserved.
.\"
.\" This code is derived from software contributed to The NetBSD Foundation
@@ -27,7 +27,7 @@
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
.\" POSSIBILITY OF SUCH DAMAGE.
.\"
-.Dd September 7, 2024
+.Dd April 15, 2025
.Dt MK.CONF 5
.Os
.\" turn off hyphenation
@@ -1037,6 +1037,12 @@ variable.
.Dq no
until the import of Kyua is done and validated.
.
+.It Sy MKLC040COMPAT
+Build a XCLC040 compatable toolchain
+.Sy m68k
+.DFLT
+.Dq no
+.
.It Sy MKLDAP
.YorN
Indicates whether the Lightweight Directory Access Protocol (LDAP)
diff -r 9fc76abb7419 share/mk/bsd.own.mk
--- a/share/mk/bsd.own.mk Mon Apr 14 16:43:00 2025 +0000
+++ b/share/mk/bsd.own.mk Fri Apr 18 02:11:09 2025 +1000
@@ -1212,6 +1212,11 @@ MKSTATICPIE?= no
.endif
#
+# Build option for lc040 (m68k) compatible toolchain.
+#
+MKLC040COMPAT?= no
+
+#
# MK* options which default to "yes".
# Please keep alphabetically sorted with one entry per line.
#
diff -r 9fc76abb7419 tools/binutils/Makefile
--- a/tools/binutils/Makefile Mon Apr 14 16:43:00 2025 +0000
+++ b/tools/binutils/Makefile Fri Apr 18 02:11:09 2025 +1000
@@ -33,6 +33,10 @@ INSTALL_TARGET+=install-gprof
.include "${.CURDIR}/../Makefile.gnuhost"
+.if ${MKLC040COMPAT} != "no"
+HOST_CPPFLAGS+= -DLC040COMPAT
+.endif
+
CCADDFLAGS= -I${GNUHOSTDIST}/include -I${DESTDIR}/usr/include
CCADDFLAGS+= -B${DESTDIR}/usr/lib/
CCADDFLAGS+= ${HOST_CPPFLAGS}
Home |
Main Index |
Thread Index |
Old Index