Commit 4838bfc0 by Andreas Tobler Committed by Andreas Tobler

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
parent 024abeb3
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 @@ ...@@ -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 ...@@ -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-*)
......
// 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) ...@@ -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) ...@@ -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__ */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment