2010-11-19 7 views
3

Im Folgenden Beispielcode für Bogen X86,Hafen unter x86-Programm MIPS32

# define INC(_lval,_lqual) \ 
     __asm__ __volatile__ (\ 
     "lock ; incl (%0)" : /*out*/ : /*in*/"r"(&(_lval)) : "memory", "cc") 

Bitte mir jemand äquivalent MIPS32 Bogen helfen.

Antwort

3

Das sieht aus wie Gcc Inline-Assembly für ein atomares Inkrement. Dies ist die gcc intrinsischen für einen Atomschritt:

__sync_fetch_and_add(&_lval, 1);

Arbeiten auf x86, MIPS32, usw.

+2

bekommen undefinierten Verweis auf '__sync_fetch_and_add_4 für mips32 –

+0

@ding_dong: Sie sollten auch eine Warnung dann gesehen haben, zumindest das ist, was die GCC-Dokumentation angibt. –

+0

Wenn gcc es nicht auf dieser Architektur implementiert hat, wie Ihre Fehlermeldung und Jens Antwort vermuten lässt, dann werde ich leider nicht viel helfen. Das MIPS32 Architecture-Handbuch zeigt, dass MIPS32 über einen bedingten Speicher mit Ladeverknüpfung verfügt. Sie müssen diesen verwenden, um ein atomares Inkrement zu erstellen. –

0

ich einen Code gefunden, der für Dich here nützlich sein könnte. Es scheint in der Tat anzuzeigen, dass das für gcc eingebaute Modul für diese Architektur nicht implementiert ist.

Verwandte Themen