diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index 7cfe8f3f72c1d7a20c1ad436c8a5a39555c09ed6..8f881c9ad60cab6a79e7930fc595e628a415eea8 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,10 @@
+2005-09-28  Geoffrey Keating  <geoffk@apple.com>
+
+	* sysdep/powerpc/locks.h: Use 64-bit versions of primitives when
+	__LP64__ is defined rather than __powerpc64__.
+	(compare_and_swap): 'ret' is an obj_addr_t not just an int.
+	(compare_and_swap_release): Likewise.
+
 2005-09-28  David Daney  <ddaney@avtrex.com>
 
 	* HACKING: Update instructions for classpath import.
diff --git a/libjava/sysdep/powerpc/locks.h b/libjava/sysdep/powerpc/locks.h
index 5a6a945e494709185923f9dc384097915fcbcb0f..fe4f01ec182bb5f68235ca3d4623e7918806e7a7 100644
--- a/libjava/sysdep/powerpc/locks.h
+++ b/libjava/sysdep/powerpc/locks.h
@@ -11,7 +11,7 @@ details.  */
 #ifndef __SYSDEP_LOCKS_H__
 #define __SYSDEP_LOCKS_H__
 
-#ifdef __powerpc64__
+#ifdef __LP64__
 #define _LARX "ldarx "
 #define _STCX "stdcx. "
 #else
@@ -30,7 +30,7 @@ inline static bool
 compare_and_swap (volatile obj_addr_t *addr, obj_addr_t old,
 		  obj_addr_t new_val) 
 {
-  int ret;
+  obj_addr_t ret;
 
   __asm__ __volatile__ (
 	   "0:    " _LARX "%0,0,%1 \n"
@@ -62,7 +62,7 @@ inline static bool
 compare_and_swap_release (volatile obj_addr_t *addr, obj_addr_t old,
 			  obj_addr_t new_val)
 {
-  int ret;
+  obj_addr_t ret;
 
   __asm__ __volatile__ ("sync" : : : "memory");