From 6acaa318872d8ca93eaf8882077e6fa4679e585e Mon Sep 17 00:00:00 2001 From: Jeffrey A Law Date: Wed, 8 Jul 1998 23:40:33 +0000 Subject: [PATCH] * gcc.dg/980709-1.c: New test. From-SVN: r21018 --- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.dg/980709-1.c | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/980709-1.c diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 5fc53848a6d..4a0a6849518 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +Thu Jul 9 00:38:51 1998 Jeffrey A Law (law@cygnus.com) + + * gcc.dg/980709-1.c: New test. + Tue Jul 7 13:41:27 1998 Richard Henderson * gcc.c-torture/execute/bcp-1.c: New test. diff --git a/gcc/testsuite/gcc.dg/980709-1.c b/gcc/testsuite/gcc.dg/980709-1.c new file mode 100644 index 00000000000..a4359300587 --- /dev/null +++ b/gcc/testsuite/gcc.dg/980709-1.c @@ -0,0 +1,20 @@ +/* { dg-do compile { target i?86-*-* } } */ +/* { dg-options -O2 } */ + +extern __inline__ int test_and_set_bit(int nr, volatile void * addr) +{ + int oldbit; + __asm__ __volatile__( "" + "btsl %2,%1\n\tsbbl %0,%0" + :"=r" (oldbit),"=m" (addr) + :"ir" (nr)); + return oldbit; +} +struct buffer_head { + unsigned long b_state; +}; +extern void lock_buffer(struct buffer_head * bh) +{ + while (test_and_set_bit(2 , &bh->b_state)) + __wait_on_buffer(bh); +} -- 2.30.2