Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: fusl/arch/i386/atomic_arch.h

Issue 1724903002: [fusl] Remove code for unsupported architectures (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fusl/arch/arm/syscall_arch.h ('k') | fusl/arch/i386/bits/alltypes.h.in » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 #define a_cas a_cas
2 static inline int a_cas(volatile int* p, int t, int s) {
3 __asm__ __volatile__("lock ; cmpxchg %3, %1"
4 : "=a"(t), "=m"(*p)
5 : "a"(t), "r"(s)
6 : "memory");
7 return t;
8 }
9
10 #define a_swap a_swap
11 static inline int a_swap(volatile int* p, int v) {
12 __asm__ __volatile__("xchg %0, %1" : "=r"(v), "=m"(*p) : "0"(v) : "memory");
13 return v;
14 }
15
16 #define a_fetch_add a_fetch_add
17 static inline int a_fetch_add(volatile int* p, int v) {
18 __asm__ __volatile__("lock ; xadd %0, %1"
19 : "=r"(v), "=m"(*p)
20 : "0"(v)
21 : "memory");
22 return v;
23 }
24
25 #define a_and a_and
26 static inline void a_and(volatile int* p, int v) {
27 __asm__ __volatile__("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
28 }
29
30 #define a_or a_or
31 static inline void a_or(volatile int* p, int v) {
32 __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
33 }
34
35 #define a_inc a_inc
36 static inline void a_inc(volatile int* p) {
37 __asm__ __volatile__("lock ; incl %0" : "=m"(*p) : "m"(*p) : "memory");
38 }
39
40 #define a_dec a_dec
41 static inline void a_dec(volatile int* p) {
42 __asm__ __volatile__("lock ; decl %0" : "=m"(*p) : "m"(*p) : "memory");
43 }
44
45 #define a_store a_store
46 static inline void a_store(volatile int* p, int x) {
47 __asm__ __volatile__("mov %1, %0 ; lock ; orl $0,(%%esp)"
48 : "=m"(*p)
49 : "r"(x)
50 : "memory");
51 }
52
53 #define a_barrier a_barrier
54 static inline void a_barrier() {
55 __asm__ __volatile__("" : : : "memory");
56 }
57
58 #define a_pause a_pause
59 static inline void a_spin() {
60 __asm__ __volatile__("pause" : : : "memory");
61 }
62
63 #define a_crash a_crash
64 static inline void a_crash() {
65 __asm__ __volatile__("hlt" : : : "memory");
66 }
67
68 #define a_ctz_64 a_ctz_64
69 static inline int a_ctz_64(uint64_t x) {
70 int r;
71 __asm__("bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; add $32,%0\n1:"
72 : "=&r"(r)
73 : "r"((unsigned)x), "r"((unsigned)(x >> 32)));
74 return r;
75 }
76
77 #define a_ctz_l a_ctz_l
78 static inline int a_ctz_l(unsigned long x) {
79 long r;
80 __asm__("bsf %1,%0" : "=r"(r) : "r"(x));
81 return r;
82 }
OLDNEW
« no previous file with comments | « fusl/arch/arm/syscall_arch.h ('k') | fusl/arch/i386/bits/alltypes.h.in » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698