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 <[email protected]> >> AuthorDate: 2026-02-13 11:24:40 +0000 >> Commit: Konstantin Belousov <[email protected]> >> 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.com
