Subversion Repositories HelenOS

Rev

Rev 2071 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2071 Rev 2082
Line 37... Line 37...
37
 
37
 
38
static inline void atomic_inc(atomic_t *val)
38
static inline void atomic_inc(atomic_t *val)
39
{
39
{
40
    long tmp;
40
    long tmp;
41
 
41
 
42
    asm __volatile__ (
42
    asm volatile (
43
        "1:\n"
43
        "1:\n"
44
        "lwarx %0, 0, %2\n"
44
        "lwarx %0, 0, %2\n"
45
        "addic %0, %0, 1\n"
45
        "addic %0, %0, 1\n"
46
        "stwcx. %0, 0, %2\n"
46
        "stwcx. %0, 0, %2\n"
47
        "bne- 1b"
47
        "bne- 1b"
Line 52... Line 52...
52
 
52
 
53
static inline void atomic_dec(atomic_t *val)
53
static inline void atomic_dec(atomic_t *val)
54
{
54
{
55
    long tmp;
55
    long tmp;
56
 
56
 
57
    asm __volatile__(
57
    asm volatile (
58
        "1:\n"
58
        "1:\n"
59
        "lwarx %0, 0, %2\n"
59
        "lwarx %0, 0, %2\n"
60
        "addic %0, %0, -1\n"
60
        "addic %0, %0, -1\n"
61
        "stwcx. %0, 0, %2\n"
61
        "stwcx. %0, 0, %2\n"
62
        "bne- 1b"
62
        "bne- 1b"