Rev 3191 | Rev 4345 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 3191 | Rev 3403 | ||
---|---|---|---|
Line 106... | Line 106... | ||
106 | #ifdef CONFIG_HT |
106 | #ifdef CONFIG_HT |
107 | "pause\n" |
107 | "pause\n" |
108 | #endif |
108 | #endif |
109 | "mov %0, %1\n" |
109 | "mov %0, %1\n" |
110 | "testq %1, %1\n" |
110 | "testq %1, %1\n" |
111 | "jnz 0b\n" /* Lightweight looping on locked spinlock */ |
111 | "jnz 0b\n" /* lightweight looping on locked spinlock */ |
112 | 112 | ||
113 | "incq %1\n" /* now use the atomic operation */ |
113 | "incq %1\n" /* now use the atomic operation */ |
114 | "xchgq %0, %1\n" |
114 | "xchgq %0, %1\n" |
115 | "testq %1, %1\n" |
115 | "testq %1, %1\n" |
116 | "jnz 0b\n" |
116 | "jnz 0b\n" |
117 | : "+m" (val->count), "=r"(tmp) |
117 | : "+m" (val->count), "=&r" (tmp) |
118 | ); |
118 | ); |
119 | /* |
119 | /* |
120 | * Prevent critical section code from bleeding out this way up. |
120 | * Prevent critical section code from bleeding out this way up. |
121 | */ |
121 | */ |
122 | CS_ENTER_BARRIER(); |
122 | CS_ENTER_BARRIER(); |