Commit e026db5893aeff66bbc1153002b5285bc361c0a2
1 parent
43f04c23
alpha support
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@111 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
19 additions
and
0 deletions
exec-i386.c
... | ... | @@ -102,6 +102,25 @@ static inline int testandset (int *p) |
102 | 102 | } |
103 | 103 | #endif |
104 | 104 | |
105 | +#ifdef __alpha__ | |
106 | +int testandset (int *p) | |
107 | +{ | |
108 | + int ret; | |
109 | + unsigned long one; | |
110 | + | |
111 | + __asm__ __volatile__ ("0: mov 1,%2\n" | |
112 | + " ldl_l %0,%1\n" | |
113 | + " stl_c %2,%1\n" | |
114 | + " beq %2,1f\n" | |
115 | + ".subsection 2\n" | |
116 | + "1: br 0b\n" | |
117 | + ".previous" | |
118 | + : "=r" (ret), "=m" (*p), "=r" (one) | |
119 | + : "m" (*p)); | |
120 | + return ret; | |
121 | +} | |
122 | +#endif | |
123 | + | |
105 | 124 | int global_cpu_lock = 0; |
106 | 125 | |
107 | 126 | void cpu_lock(void) | ... | ... |