Пробую собрать protobuf для архитектуры SH4, сборка останавливается с сообщенеи о некорректности asm - google/protobuf/stubs/atomicops_internals_mips_gcc.h:69: error: impossible constraint in 'asm'
Код: Выделить всё
inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
Atomic32 old_value,
Atomic32 new_value) {
Atomic32 prev, tmp;
__asm__ __volatile__(".set push\n"
".set noreorder\n"
"1:\n"
"ll %0, %5\n" // prev = *ptr
"bne %0, %3, 2f\n" // if (prev != old_value) goto 2
"move %2, %4\n" // tmp = new_value
"sc %2, %1\n" // *ptr = tmp (with atomic check)
"beqz %2, 1b\n" // start again on atomic error
"nop\n" // delay slot nop
"2:\n"
".set pop\n"
: "=&r" (prev), "=m" (*ptr), "=&r" (tmp)
: "Ir" (old_value), "r" (new_value), "m" (*ptr)
: "memory"); // 69 строка
return prev;
}
С asm мне как-то не приходилось сталкиваться, можете подсказать решение?
Спасибо.