diff options
author | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-05-08 22:41:43 +0200 |
---|---|---|
committer | Thomas Petazzoni <thomas.petazzoni@free-electrons.com> | 2017-05-11 22:13:19 +0200 |
commit | bdadcf593d5308fcc1c8e767b7c2af8ae5aa9144 (patch) | |
tree | 7b5666537d45c4f758f1eea06dacfb8536d302bc /package/gcc | |
parent | abb825bd6b3dd74108d89a1fed60217b80470067 (diff) | |
download | buildroot-bdadcf593d5308fcc1c8e767b7c2af8ae5aa9144.tar.gz buildroot-bdadcf593d5308fcc1c8e767b7c2af8ae5aa9144.zip |
kvm-unit-tests: fix build on x86-64 with specific gcc versions
kvm-unit-tests uses the following code on x86/x86-64:
static inline u64 scale_delta(u64 delta, u64 mul_frac)
{
u64 product, unused;
__asm__ (
"mul %3"
: "=d" (product), "=a" (unused) : "1" (delta), "rm" ((u64)mul_frac) );
return product;
}
The "mul" instruction does not have a suffix that indicates the width of
the data being multiplied. When the data is passed in a register, there
is no need to specify the width, but with some gcc versions, the data is
passed as a memory reference, and therefore the assembler does not know
the width of the data to be multiplied. It causes the following build
failure:
x86/hyperv_clock.c: Assembler messages:
x86/hyperv_clock.c:21: Error: no instruction mnemonic suffix given and no register operands; can't size instruction
Since the data being multiplied is 64 bit, we explicitly specify the
instruction as being "mulq".
Fixes:
http://autobuild.buildroot.net/results/a4a65d01f049db83a93de92660f228dd18532625/
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Diffstat (limited to 'package/gcc')
0 files changed, 0 insertions, 0 deletions