Subversion Repositories HelenOS

Rev

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

Rev 2174 Rev 2195
Line 55... Line 55...
55
{
55
{
56
    int ret;
56
    int ret;
57
    volatile long * mem = &(val->count);
57
    volatile long * mem = &(val->count);
58
 
58
 
59
    asm volatile (
59
    asm volatile (
60
        "1:                     \n"
60
        "1:                 \n"
61
        "ldr r2, [%1]           \n"
61
        "ldr r2, [%1]       \n"
62
        "add r3, r2, %2         \n"
62
        "add r3, r2, %2     \n"
63
        "str r3, %0             \n"
63
        "str r3, %0         \n"
64
        "swp r3, r3, [%1]       \n"
64
        "swp r3, r3, [%1]   \n"
65
        "cmp r3, r2             \n"
65
        "cmp r3, r2         \n"
66
        "bne 1b                 \n"
66
        "bne 1b             \n"
67
 
67
 
68
        : "=m" (ret)
68
        : "=m" (ret)
69
        : "r" (mem), "r" (i)
69
        : "r" (mem), "r" (i)
70
        : "r3", "r2"
70
        : "r3", "r2"
71
    );
71
    );
72
 
72
 
73
    return ret;
73
    return ret;
74
}
74
}  
75
 
75
 
76
#endif
76
#endif
77
 
77
 
78
/** @}
78
/** @}
79
 */
79
 */