Go to the source code of this file.
Typedefs | |
typedef int | IgTraceAtomic |
Functions | |
IgTraceAtomic | IgTraceAtomicDec (volatile IgTraceAtomic *val) |
IgTraceAtomic | IgTraceAtomicInc (volatile IgTraceAtomic *val) |
typedef int IgTraceAtomic |
Definition at line 14 of file IgTraceAtomic.h.
IgTraceAtomic IgTraceAtomicDec | ( | volatile IgTraceAtomic * | val | ) | [inline] |
Definition at line 48 of file IgTraceAtomic.h.
References HLT_VtxMuL3::result.
Referenced by IgTrace::disable().
00049 { 00050 # if __i386__ 00051 IgTraceAtomic result; 00052 __asm__ __volatile__ 00053 ("lock; xaddl %0, (%1); decl %0;" 00054 : "=r" (result) 00055 : "r" (val), "0" (-1)); 00056 return result; 00057 # elif __ppc__ 00058 IgTraceAtomic result; 00059 __asm__ __volatile__ 00060 (" lwsync\n" 00061 "1: lwarx %0, 0, %1\n" 00062 " addic %0, %0, -1\n" 00063 " stwcx. %0, 0, %1\n" 00064 " bne- 1b\n" 00065 " isync\n" 00066 : "=&r" (result) 00067 : "r" (val) 00068 : "cc", "memory"); 00069 return result; 00070 # endif 00071 }
IgTraceAtomic IgTraceAtomicInc | ( | volatile IgTraceAtomic * | val | ) | [inline] |
Definition at line 22 of file IgTraceAtomic.h.
References HLT_VtxMuL3::result.
Referenced by IgTrace::enable().
00023 { 00024 # if __i386__ 00025 IgTraceAtomic result; 00026 __asm__ __volatile__ 00027 (" lock; xaddl %0, (%1); incl %0;" 00028 : "=r" (result) 00029 : "r" (val), "0" (1)); 00030 return result+1; 00031 # elif __ppc__ 00032 IgTraceAtomic result; 00033 __asm__ __volatile__ 00034 (" lwsync\n" 00035 "1: lwarx %0, 0, %1\n" 00036 " addic %0, %0, 1\n" 00037 " stwcx. %0, 0, %1\n" 00038 " bne- 1b\n" 00039 " isync\n" 00040 : "=&r" (result) 00041 : "r" (val) 00042 : "cc", "memory"); 00043 return result; 00044 # endif 00045 }