[kvm-unit-tests] arm64: Build failures in fpu.c test with clang

Raghavendra Rao Ananta rananta at google.com
Wed Oct 16 13:07:58 PDT 2024


Hello,

Compiling the kvm-unit-tests for arm64 with clang gives the following error:

arm/fpu.c:235:3: error: unknown register name 'q0' in asm
                fpu_reg_read(outdata);
                ^
arm/fpu.c:59:10: note: expanded from macro 'fpu_reg_read'
                     : "q0", "q1", "q2", "q3",          \
                       ^
arm/fpu.c:281:3: error: unknown register name 'q0' in asm
                fpu_reg_write(*indata);
                ^
arm/fpu.c:92:10: note: expanded from macro 'fpu_reg_write'
                     : "q0", "q1", "q2", "q3",          \
                       ^
2 errors generated.

It's likely that clang doesn't have "q" registers in its dictionary,
so I tried replacing it with "v" registers, only in the clobbered
list. However, I think this granted clang to optimize the code in a
way that causes data abort at in fpu_reg_read() at the first
instruction:

stp q0, q1, [%0], #32\n\t"

Although removing the optimization flag, -O2, generates correct code
and the test passes.

Any suggestions on how to deal with this in a better way?

Thank you.
Raghavendra



More information about the linux-arm-kernel mailing list