mirror of git://gcc.gnu.org/git/gcc.git
re PR libgcj/30513 (Bootstrap failure with libgcj on sparc-sun-solaris2.10)
2007-01-27 Andreas Tobler <a.tobler@schweiz.org> PR libgcj/30513 * configure.host: Add forgottten sysdep_dir to sparc. Add a flag to libgcj_flags to undefine 'sun' at compile time. * sysdep/sparc/locks.h (read_barrier): New functions for 32 and 64 bit Sparc. (write_barrier): Likewise. From-SVN: r121239
This commit is contained in:
parent
024abeb327
commit
4838bfc05b
|
|
@ -1,3 +1,12 @@
|
||||||
|
2007-01-27 Andreas Tobler <a.tobler@schweiz.org>
|
||||||
|
|
||||||
|
PR libgcj/30513
|
||||||
|
* configure.host: Add forgottten sysdep_dir to sparc. Add a flag to
|
||||||
|
libgcj_flags to undefine 'sun' at compile time.
|
||||||
|
* sysdep/sparc/locks.h (read_barrier): New functions for 32 and 64 bit
|
||||||
|
Sparc.
|
||||||
|
(write_barrier): Likewise.
|
||||||
|
|
||||||
2007-01-27 Keith Seitz <keiths@redhat.com>
|
2007-01-27 Keith Seitz <keiths@redhat.com>
|
||||||
|
|
||||||
* gnu/classpath/jdwp/natVMVirtualMachine.cc
|
* gnu/classpath/jdwp/natVMVirtualMachine.cc
|
||||||
|
|
@ -61,7 +70,7 @@
|
||||||
* libjava/testsuite/libjava.jvmti/jvmti-interp.exp: New file.
|
* libjava/testsuite/libjava.jvmti/jvmti-interp.exp: New file.
|
||||||
* libjava/testsuite/libjava.jvmti/interp: New folder.
|
* libjava/testsuite/libjava.jvmti/interp: New folder.
|
||||||
* libjava/testsuite/lib/libjava.exp (exec_gij): New Method.
|
* libjava/testsuite/lib/libjava.exp (exec_gij): New Method.
|
||||||
|
|
||||||
2007-01-24 Keith Seitz <keiths@redhat.com>
|
2007-01-24 Keith Seitz <keiths@redhat.com>
|
||||||
|
|
||||||
* link.cc (_Jv_Linker::wait_for_state): Add JVMTI
|
* link.cc (_Jv_Linker::wait_for_state): Add JVMTI
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,10 @@ case "${host}" in
|
||||||
enable_hash_synchronization_default=yes
|
enable_hash_synchronization_default=yes
|
||||||
;;
|
;;
|
||||||
sparc*-*)
|
sparc*-*)
|
||||||
|
sysdeps_dir=sparc
|
||||||
|
# On Solaris we have defined 'sun' which later conflicts with
|
||||||
|
# namespace usage. So to work this away we use the below undefine.
|
||||||
|
libgcj_flags="${libgcj_flags} -Usun"
|
||||||
libgcj_interpreter=yes
|
libgcj_interpreter=yes
|
||||||
;;
|
;;
|
||||||
ia64-*)
|
ia64-*)
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
// locks.h - Thread synchronization primitives. Sparc implementation.
|
// locks.h - Thread synchronization primitives. Sparc implementation.
|
||||||
|
|
||||||
/* Copyright (C) 2002 Free Software Foundation
|
/* Copyright (C) 2002, 2007 Free Software Foundation
|
||||||
|
|
||||||
This file is part of libgcj.
|
This file is part of libgcj.
|
||||||
|
|
||||||
|
|
@ -38,12 +38,23 @@ release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static bool
|
inline static bool
|
||||||
compare_and_swap_release(volatile obj_addr_t *addr,
|
compare_and_swap_release(volatile obj_addr_t *addr, obj_addr_t old,
|
||||||
obj_addr_t old,
|
obj_addr_t new_val)
|
||||||
obj_addr_t new_val)
|
|
||||||
{
|
{
|
||||||
return compare_and_swap(addr, old, new_val);
|
return compare_and_swap(addr, old, new_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline static void
|
||||||
|
read_barrier()
|
||||||
|
{
|
||||||
|
__asm__ __volatile__("membar #LoadLoad | #LoadStore" : : : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void
|
||||||
|
write_barrier()
|
||||||
|
{
|
||||||
|
__asm__ __volatile__("membar #StoreLoad | #StoreStore" : : : "memory");
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
/* Sparc32 implementation, use a spinlock. */
|
/* Sparc32 implementation, use a spinlock. */
|
||||||
static unsigned char __cas_lock = 0;
|
static unsigned char __cas_lock = 0;
|
||||||
|
|
@ -109,12 +120,23 @@ release_set(volatile obj_addr_t *addr, obj_addr_t new_val)
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static bool
|
inline static bool
|
||||||
compare_and_swap_release(volatile obj_addr_t *addr,
|
compare_and_swap_release(volatile obj_addr_t *addr, obj_addr_t old,
|
||||||
obj_addr_t old,
|
obj_addr_t new_val)
|
||||||
obj_addr_t new_val)
|
|
||||||
{
|
{
|
||||||
return compare_and_swap(addr, old, new_val);
|
return compare_and_swap(addr, old, new_val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline static void
|
||||||
|
read_barrier()
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("" : : : "memory");
|
||||||
|
}
|
||||||
|
|
||||||
|
inline static void
|
||||||
|
write_barrier()
|
||||||
|
{
|
||||||
|
__asm__ __volatile__ ("" : : : "memory");
|
||||||
|
}
|
||||||
#endif /* __arch64__ */
|
#endif /* __arch64__ */
|
||||||
|
|
||||||
#endif /* ! __SYSDEP_LOCKS_H__ */
|
#endif /* ! __SYSDEP_LOCKS_H__ */
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue