Date: Wed, 29 Jul 2026 15:08:20 -0700 From: Mark Millard <marklmi@yahoo.com> To: John Baldwin <jhb@FreeBSD.org>, Konstantin Belousov <kib@FreeBSD.org>, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org Subject: Re: git: 6e93f5e4d693 - main - amd64: FRED support Message-ID: <c73d21c8-e611-4770-98d2-94a243707d23@yahoo.com> In-Reply-To: <0c99064d-9ada-4ed9-800e-a0cae178f6c8@FreeBSD.org> References: <6a5e986a.22164.2ca88691@gitrepo.freebsd.org> <0c99064d-9ada-4ed9-800e-a0cae178f6c8@FreeBSD.org>
index | next in thread | previous in thread | raw e-mail
On 7/29/26 13:44, John Baldwin wrote: > On 7/20/26 17:51, Konstantin Belousov wrote: >> The branch main has been updated by kib: >> >> URL: https://cgit.FreeBSD.org/src/commit/? >> id=6e93f5e4d6932c423b89dff8fc08d86f8bdeb7b9 >> >> commit 6e93f5e4d6932c423b89dff8fc08d86f8bdeb7b9 >> Author: Konstantin Belousov <kib@FreeBSD.org> >> AuthorDate: 2026-02-13 11:24:40 +0000 >> Commit: Konstantin Belousov <kib@FreeBSD.org> >> CommitDate: 2026-07-20 21:51:02 +0000 >> >> amd64: FRED support >> FRED support as defined starting from the SDM rev. 90, >> requires a new >> 'events' entry point to receive user and kernel mode exceptions and >> interrupts notifications from the hardware. A minimal asm >> trampoline is >> enough, rest can be implemented in C due to the clean FRED >> organization >> of the event reporting. >> The syscall entry is handled by a microptimized assembly >> path, directly >> calling into the amd64_syscall() handler, instead of the generic >> events >> entry point. >> Tested by: emaste >> Sponsored by: The FreeBSD Foundation >> MFC after: 1 week >> Differential revision: https://reviews.freebsd.org/D55829 > > This appears to have broken the cross-build jobs on GitHub for the past > week > which build with clang 15 and clang 18. Are those versions too old to > support > the instructions used here? > > Sample output: > > -------------------------------------------------------------- >>>> stage 3.1: building everything > -------------------------------------------------------------- > /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/ > exception.S:1455:2: error: invalid instruction mnemonic 'eretu' > eretu > ^~~~~ > /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/ > exception.S:1521:2: error: invalid instruction mnemonic 'lkgs' > lkgs %ax > ^~~~ > /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/ > exception.S:1542:2: error: invalid instruction mnemonic 'eretu' > eretu > ^~~~~ > /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/ > exception.S:1662:2: error: invalid instruction mnemonic 'erets' > erets > ^~~~~ > /home/runner/work/freebsd-src/freebsd-src/sys/amd64/amd64/ > exception.S:1682:2: error: invalid instruction mnemonic 'erets' > erets > ^~~~~ > --- exception.o --- > *** [exception.o] Error code 1 > > (Or maybe clang needs some -m<foo> or .set <foo> to enable use of these > instructions?) > >From what I read (but its is only reading): clang-15 predates any FRED support. clang-17 was more incomplete/preliminary/experimental for FRED support clang-18 has .S and inline assembly FRED support but various (most?) target triples do not enable it by default. Possibly add to appropriate .S file(s): .arch x86-64 .arch .fred .arch .lkgs for defined(__clang__) && (__clang_major__ >= 18) Or, make use of: -Wa,-mwave-fred -Wa,-mwave-lkgs clang-19 has the intended fully general handling of FRED. -- === Mark Millard marklmi at yahoo.comhome | help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?c73d21c8-e611-4770-98d2-94a243707d23>
