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 | */ |