Newer gcc is more pedantic about in-line assembler reference types. This was causing compile error "incorrect register %rax' used withl' suffix" with newer GCC versions. The problem was a bug in spinlock.h in-line assembly, where references were for a register (g - incorrect) vs. memory (m - correct). Thanks to gleb and kevin from KVM team for finding the bug and fix.
Signed-off-by: Chris Evich <[email protected]> --- client/tests/monotonic_time/src/spinlock.h | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/tests/monotonic_time/src/spinlock.h b/client/tests/monotonic_time/src/spinlock.h index b70116a..2e57f25 100644 --- a/client/tests/monotonic_time/src/spinlock.h +++ b/client/tests/monotonic_time/src/spinlock.h @@ -17,12 +17,12 @@ static inline void spin_lock(spinlock_t *lock) "1: rep; nop\n" " lock; btsl $0,%0\n" "jc 1b\n" - : "=g"(*lock) : : "memory"); + : "=m"(*lock) : : "memory"); } static inline void spin_unlock(spinlock_t *lock) { - __asm__ __volatile__("movl $0,%0; rep; nop" : "=g"(*lock) :: "memory"); + __asm__ __volatile__("movl $0,%0; rep; nop" : "=m"(*lock) :: "memory"); } #endif /* SPINLOCK_H_ */ -- 1.7.1 _______________________________________________ Autotest mailing list [email protected] http://test.kernel.org/cgi-bin/mailman/listinfo/autotest
