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

Reply via email to