1 /* { dg-do compile } */ 2 /* { dg-options -O2 } */ 3 test_and_set_bit(int nr,volatile void * addr)4extern __inline__ int test_and_set_bit(int nr, volatile void * addr) 5 { 6 int oldbit; 7 __asm__ __volatile__( "" 8 "btsl %2,%1\n\tsbbl %0,%0" 9 :"=r" (oldbit),"=m" (addr) 10 :"ir" (nr)); 11 return oldbit; 12 } 13 struct buffer_head { 14 unsigned long b_state; 15 }; 16 void __wait_on_buffer (struct buffer_head *); lock_buffer(struct buffer_head * bh)17extern void lock_buffer(struct buffer_head * bh) 18 { 19 while (test_and_set_bit(2 , &bh->b_state)) 20 __wait_on_buffer(bh); 21 } 22