atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock): Correct alignment.
* hppa/atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock): Correct alignment. (__exchange_and_add, __atomic_add): Use PA 2.0 ordered store to reset lock. From-SVN: r62593
This commit is contained in:
parent
cefadf78ae
commit
5053bdf834
|
@ -1,3 +1,10 @@
|
||||||
|
2003-02-08 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||||
|
|
||||||
|
* hppa/atomicity.h (__Atomicity_lock<__inst>::_S_atomicity_lock):
|
||||||
|
Correct alignment.
|
||||||
|
(__exchange_and_add, __atomic_add): Use PA 2.0 ordered store to reset
|
||||||
|
lock.
|
||||||
|
|
||||||
2003-02-07 Paolo Carlini <pcarlini@unitus.it>
|
2003-02-07 Paolo Carlini <pcarlini@unitus.it>
|
||||||
|
|
||||||
* testsuite/27_io/filebuf_virtuals.cc (test08): Fix for
|
* testsuite/27_io/filebuf_virtuals.cc (test08): Fix for
|
||||||
|
|
|
@ -25,11 +25,12 @@ typedef int _Atomic_word;
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
struct __Atomicity_lock
|
struct __Atomicity_lock
|
||||||
{
|
{
|
||||||
static volatile int __attribute__ ((aligned (16))) _S_atomicity_lock;
|
static volatile int _S_atomicity_lock;
|
||||||
};
|
};
|
||||||
|
|
||||||
template <int __inst>
|
template <int __inst>
|
||||||
volatile int __Atomicity_lock<__inst>::_S_atomicity_lock = 1;
|
volatile int
|
||||||
|
__Atomicity_lock<__inst>::_S_atomicity_lock __attribute__ ((aligned (16))) = 1;
|
||||||
|
|
||||||
/* Because of the lack of weak support when using the hpux
|
/* Because of the lack of weak support when using the hpux
|
||||||
som linker, we explicitly instantiate the atomicity lock
|
som linker, we explicitly instantiate the atomicity lock
|
||||||
|
@ -58,8 +59,9 @@ __exchange_and_add (volatile _Atomic_word* __mem, int __val)
|
||||||
|
|
||||||
result = *__mem;
|
result = *__mem;
|
||||||
*__mem = result + __val;
|
*__mem = result + __val;
|
||||||
__asm__ __volatile__("");
|
/* Reset lock with PA 2.0 "ordered" store. */
|
||||||
lock = tmp;
|
__asm__ __volatile__ ("stw,ma %1,0(%0)"
|
||||||
|
: : "r" (&lock), "r" (tmp) : "memory");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,8 +82,9 @@ __atomic_add (_Atomic_word* __mem, int __val)
|
||||||
: "r" (&lock));
|
: "r" (&lock));
|
||||||
|
|
||||||
*__mem += __val;
|
*__mem += __val;
|
||||||
__asm__ __volatile__("");
|
/* Reset lock with PA 2.0 "ordered" store. */
|
||||||
lock = tmp;
|
__asm__ __volatile__ ("stw,ma %1,0(%0)"
|
||||||
|
: : "r" (&lock), "r" (tmp) : "memory");
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue