1  /* { dg-do compile } */
       2  /* { dg-options -O2 } */
       3  
       4  extern __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 *);
      17  extern void lock_buffer(struct buffer_head * bh)
      18  {
      19  	while (test_and_set_bit(2 , &bh->b_state))
      20  		__wait_on_buffer(bh);
      21  }