Thread: [Sablevm-developer] powerpc patch
Brought to you by:
egagnon
From: David P. B. <db...@CS...> - 2002-12-18 05:42:54
Attachments:
sablevm-1.0.5-linuxppc.patch
|
Etienne, I am sending the powerpc patch I have. The patch is against release 1.0.5. Let me know the correct/prefered patch format, I am not=20 familiar with diff/patch. It was not heavily tested yet. I'm not sure if the libffi bug work around works 100%. Other parts should be correct. David --- David B=E9langer Graduate Student School of Computer Science McGill University Office: MC226 Web page: http://www.cs.mcgill.ca/~dbelan2/ Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt |
From: Etienne M. G. <eti...@uq...> - 2002-12-18 14:22:57
|
David Paul BELANGER wrote: > Etienne, >=20 > I am sending the powerpc patch I have. The patch is against release > 1.0.5. Let me know the correct/prefered patch format, I am not=20 > familiar with diff/patch. The preferred patch format is "diff -u" (unified diffs). Could you resend the patch in this format? Thanks a lot for your work! Etienne >=20 > It was not heavily tested yet. I'm not sure if the libffi bug work > around works 100%. Other parts should be correct. >=20 >=20 > David >=20 >=20 > --- >=20 > David B=E9langer > Graduate Student > School of Computer Science > McGill University > Office: MC226 >=20 > Web page: http://www.cs.mcgill.ca/~dbelan2/ > Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt >=20 >=20 >=20 > -----------------------------------------------------------------------= - >=20 > Index: sablevm-1.0.5/src/libsablevm/native.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/= native.c,v > retrieving revision 1.1.1.1 > retrieving revision 1.3 > diff -c -r1.1.1.1 -r1.3 > *** sablevm-1.0.5/src/libsablevm/native.c 13 Dec 2002 01:52:11 -0000 1.= 1.1.1 > --- sablevm-1.0.5/src/libsablevm/native.c 14 Dec 2002 02:40:34 -0000 1.= 3 > *************** > *** 325,331 **** > --- 325,335 ---- > case 'B': > { > method->data.native_method->arg_types[i] =3D SVM_TYPE_BYTE; > + #ifdef LIBFFIBUG > + method->data.native_method->args[i] =3D &ffi_type_uint; > + #else > method->data.native_method->args[i] =3D &ffi_type_sint8; > + #endif > i++; > } > break; > *************** > *** 333,339 **** > --- 337,347 ---- > case 'C': > { > method->data.native_method->arg_types[i] =3D SVM_TYPE_CHAR; > + #ifdef LIBFFIBUG > + method->data.native_method->args[i] =3D &ffi_type_uint; > + #else > method->data.native_method->args[i] =3D &ffi_type_uint16; > + #endif > i++; > } > break; > *************** > *** 357,363 **** > --- 365,375 ---- > case 'S': > { > method->data.native_method->arg_types[i] =3D SVM_TYPE_SHORT; > + #ifdef LIBFFIBUG > + method->data.native_method->args[i] =3D &ffi_type_uint; > + #else > method->data.native_method->args[i] =3D &ffi_type_sint16; > + #endif > i++; > } > break; > *************** > *** 365,371 **** > --- 377,387 ---- > case 'Z': > { > method->data.native_method->arg_types[i] =3D SVM_TYPE_BOOLEAN; > + #ifdef LIBFFIBUG > + method->data.native_method->args[i] =3D &ffi_type_uint; > + #else > method->data.native_method->args[i] =3D &ffi_type_uint8; > + #endif > i++; > } > break; > *************** > *** 904,910 **** > --- 920,930 ---- > case SVM_TYPE_BOOLEAN: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jboolean *) &result[0]) + 3); > + #else =20 > params[0].jint =3D *((jboolean *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 912,918 **** > --- 932,942 ---- > case SVM_TYPE_BYTE: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jbyte *) &result[0]) + 3); > + #else > params[0].jint =3D *((jbyte *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 920,926 **** > --- 944,954 ---- > case SVM_TYPE_SHORT: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jshort *) &result[0]) + 2); > + #else > params[0].jint =3D *((jshort *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 928,934 **** > --- 956,966 ---- > case SVM_TYPE_CHAR: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jchar *) &result[0]) + 2); > + #else > params[0].jint =3D *((jchar *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 1238,1247 **** > } > break; > =20 > ! case SVM_TYPE_BOOLEAN: > { > ! /* don't forget about little/big endian alignment */ > params[0].jint =3D *((jboolean *) &result[0]); > frame->stack_size++; > } > break; > --- 1270,1284 ---- > } > break; > =20 > ! case SVM_TYPE_BOOLEAN: =20 > { > !=20 > ! #ifdef LIBFFIBUG > ! params[0].jint =3D *(((jboolean *) &result[0]) + 3); > ! #else > params[0].jint =3D *((jboolean *) &result[0]); > + #endif > +=20 > frame->stack_size++; > } > break; > *************** > *** 1249,1255 **** > --- 1286,1296 ---- > case SVM_TYPE_BYTE: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jbyte *) &result[0]) + 3); > + #else > params[0].jint =3D *((jbyte *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 1257,1263 **** > --- 1298,1308 ---- > case SVM_TYPE_SHORT: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jshort *) &result[0]) + 2); > + #else > params[0].jint =3D *((jshort *) &result[0]); > + #endif > frame->stack_size++; > } > break; > *************** > *** 1265,1271 **** > --- 1310,1320 ---- > case SVM_TYPE_CHAR: > { > /* don't forget about little/big endian alignment */ > + #ifdef LIBFFIBUG > + params[0].jint =3D *(((jchar *) &result[0]) + 2); > + #else > params[0].jint =3D *((jchar *) &result[0]); > + #endif > frame->stack_size++; > } > break; > Index: sablevm-1.0.5/src/libsablevm/system.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/= system.c,v > retrieving revision 1.1.1.1 > diff -c -r1.1.1.1 system.c > *** sablevm-1.0.5/src/libsablevm/system.c 13 Dec 2002 01:52:11 -0000 1.= 1.1.1 > --- sablevm-1.0.5/src/libsablevm/system.c 18 Dec 2002 02:23:30 -0000 > *************** > *** 5,11 **** > * modification of SableVM. * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= ) && defined (__GNUC__)) > =20 > /* > ---------------------------------------------------------------------= - > --- 5,11 ---- > * modification of SableVM. * > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= || defined (__powerpc__)) && defined (__GNUC__)) > =20 > /* > ---------------------------------------------------------------------= - > *************** > *** 109,114 **** > --- 109,144 ---- > result =3D __sync_bool_compare_and_swap (pword, old_value, new_valu= e); > =20 > #endif > +=20 > + #if (defined (__powerpc__)) > +=20 > + int result; > +=20 > + /* > + * Adapted from the glibc-linuxthreads, file pt-machine.h > + * > + */ > + __asm__ __volatile__ ( > + "0: lwarx %0,0,%1 ;" > + " xor. %0,%3,%0;" > + " bne 1f;" > + " stwcx. %2,0,%1;" > + " bne- 0b;" > + "1: " > + : "=3D&r"(result) > + : "r"(pword), "r"(new_value), "r"(old_value) > + : "cr0", "memory"); > + /* This version of __compare_and_swap is to be used when acquiring > + a lock, so we don't need to worry about whether other memory > + operations have completed, but we do need to be sure that any lo= ads > + after this point really occur after we have acquired the lock. = */ > + __asm__ __volatile__ ("isync" : : : "memory"); > +=20 > + /* flip the value of result */ > + result =3D !result; > +=20 > + #endif > +=20 > =20 > return result ? JNI_TRUE : JNI_FALSE; > } > Index: sablevm-1.0.5/src/libsablevm/system.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/= system.h,v > retrieving revision 1.1.1.1 > diff -c -r1.1.1.1 system.h > *** sablevm-1.0.5/src/libsablevm/system.h 13 Dec 2002 01:52:11 -0000 1.= 1.1.1 > --- sablevm-1.0.5/src/libsablevm/system.h 18 Dec 2002 02:30:27 -0000 > *************** > *** 48,54 **** > =20 > */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= ) && defined (__GNUC__)) > =20 > /* "inline" is now an official keyword since the latest C standard (1= 999). > So, it is a reasonable assuption to expect a target compiler to > --- 48,54 ---- > =20 > */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= || defined (__powerpc__)) && defined (__GNUC__)) > =20 > /* "inline" is now an official keyword since the latest C standard (1= 999). > So, it is a reasonable assuption to expect a target compiler to > *************** > *** 100,107 **** > --- 100,120 ---- > #define SVM_ALIGNMENT_POWER 3 /* 2 ^^ SVM_ALIGNMENT_POWER =3D=3D SVM_= ALIGNMENT */ > #define SVM_PAGE_SIZE 16384 > =20 > + #elif defined (__powerpc__) > +=20 > + typedef _svmt_u32 _svmt_word; > +=20 > + #define SVM_WORD_SIZE 4 /* size in bytes */ > + #define SVM_WORD_BIT_COUNT 32 /* size in bits */ > +=20 > + /* see comments at the head of this file */ > + #define SVM_ALIGNMENT 8 > + #define SVM_ALIGNMENT_POWER 3 /* 2 ^^ SVM_ALIGNMENT_POWER =3D=3D SVM_= ALIGNMENT */ > + #define SVM_PAGE_SIZE 4096 > +=20 > #endif > =20 > +=20 > /* FFI specific types */ > #define ffi_type_float32 ffi_type_float > #define ffi_type_float64 ffi_type_double > *************** > *** 163,165 **** > --- 176,179 ---- > #endif > =20 > #endif /* not SVM_SYSTEM_H */ > +=20 > Index: sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/= include/jni_system_specific.h,v > retrieving revision 1.1.1.1 > retrieving revision 1.2 > diff -c -r1.1.1.1 -r1.2 > *** sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h 13 Dec 2= 002 01:52:11 -0000 1.1.1.1 > --- sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h 13 Dec 2= 002 19:58:44 -0000 1.2 > *************** > *** 15,21 **** > =20 > /* alpha and i386 are identical here */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= ) && defined (__GNUC__)) > =20 > #define JNICALL > #define JNIEXPORT > --- 15,21 ---- > =20 > /* alpha and i386 are identical here */ > =20 > ! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__)= || defined (__powerpc__)) && defined (__GNUC__)) > =20 > #define JNICALL > #define JNIEXPORT > Index: sablevm-native-library-1.0.5/src/include/jni_system_specific.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > RCS file: /home/david/cvsroot/sablevm_ppc/sablevm-native-library-1.0.5/= src/include/jni_system_specific.h,v > retrieving revision 1.1.1.1 > retrieving revision 1.2 > diff -c -r1.1.1.1 -r1.2 > *** sablevm-native-library-1.0.5/src/include/jni_system_specific.h 13 D= ec 2002 01:52:11 -0000 1.1.1.1 > --- sablevm-native-library-1.0.5/src/include/jni_system_specific.h 13 D= ec 2002 19:59:23 -0000 1.2 > *************** > *** 8,14 **** > =20 > /* system specific primitive types */ > =20 > ! #if (defined (__i386__) && defined (__GNUC__)) > =20 > /* legend: > u =3D unsigned intger, s =3D signed integer, f =3D float, d =3D d= ouble > --- 8,14 ---- > =20 > /* system specific primitive types */ > =20 > ! #if ((defined (__i386__) || defined (__powerpc__)) && defined (__GNUC= __)) > =20 > /* legend: > u =3D unsigned intger, s =3D signed integer, f =3D float, d =3D d= ouble --=20 Etienne M. Gagnon http://www.info.uqam.ca/~egagnon/ SableVM: http://www.sablevm.org/ SableCC: http://www.sablecc.org/ |
From: David P. B. <db...@CS...> - 2002-12-18 19:59:12
Attachments:
sablevm-1.0.5-linuxppc.patch.unified
|
Hello, Here it is as an unified diff. David On Wed, Dec 18, 2002 at 09:16:57AM -0500, Etienne M. Gagnon wrote: > David Paul BELANGER wrote: > >Etienne, > > > >I am sending the powerpc patch I have. The patch is against release > >1.0.5. Let me know the correct/prefered patch format, I am not=20 > >familiar with diff/patch. >=20 > The preferred patch format is "diff -u" (unified diffs). >=20 > Could you resend the patch in this format? >=20 > Thanks a lot for your work! >=20 > Etienne >=20 > > > >It was not heavily tested yet. I'm not sure if the libffi bug work > >around works 100%. Other parts should be correct. > > > > > >David > > > > > >--- > > > >David B=E9langer > >Graduate Student > >School of Computer Science > >McGill University > >Office: MC226 > > > >Web page: http://www.cs.mcgill.ca/~dbelan2/ > >Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt > > > > > > > >----------------------------------------------------------------------= -- > > > >Index: sablevm-1.0.5/src/libsablevm/native.c > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file:=20 > >/home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/native.c,= v > >retrieving revision 1.1.1.1 > >retrieving revision 1.3 > >diff -c -r1.1.1.1 -r1.3 > >*** sablevm-1.0.5/src/libsablevm/native.c 13 Dec 2002 01:52:11 -0000=20 > >1.1.1.1 > >--- sablevm-1.0.5/src/libsablevm/native.c 14 Dec 2002 02:40:34 -0000=20 > >1.3 > >*************** > >*** 325,331 **** > >--- 325,335 ---- > > case 'B': > > { > > method->data.native_method->arg_types[i] =3D SVM_TYPE_BYTE; > >+ #ifdef LIBFFIBUG > >+ method->data.native_method->args[i] =3D &ffi_type_uint; > >+ #else > > method->data.native_method->args[i] =3D &ffi_type_sint8; > >+ #endif > > i++; > > } > > break; > >*************** > >*** 333,339 **** > >--- 337,347 ---- > > case 'C': > > { > > method->data.native_method->arg_types[i] =3D SVM_TYPE_CHAR; > >+ #ifdef LIBFFIBUG > >+ method->data.native_method->args[i] =3D &ffi_type_uint; > >+ #else > > method->data.native_method->args[i] =3D &ffi_type_uint16; > >+ #endif > > i++; > > } > > break; > >*************** > >*** 357,363 **** > >--- 365,375 ---- > > case 'S': > > { > > method->data.native_method->arg_types[i] =3D SVM_TYPE_SHORT; > >+ #ifdef LIBFFIBUG > >+ method->data.native_method->args[i] =3D &ffi_type_uint; > >+ #else > > method->data.native_method->args[i] =3D &ffi_type_sint16; > >+ #endif > > i++; > > } > > break; > >*************** > >*** 365,371 **** > >--- 377,387 ---- > > case 'Z': > > { > > method->data.native_method->arg_types[i] =3D SVM_TYPE_BOOLEAN; > >+ #ifdef LIBFFIBUG > >+ method->data.native_method->args[i] =3D &ffi_type_uint; > >+ #else > > method->data.native_method->args[i] =3D &ffi_type_uint8; > >+ #endif > > i++; > > } > > break; > >*************** > >*** 904,910 **** > >--- 920,930 ---- > > case SVM_TYPE_BOOLEAN: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jboolean *) &result[0]) + 3); > >+ #else =20 > > params[0].jint =3D *((jboolean *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 912,918 **** > >--- 932,942 ---- > > case SVM_TYPE_BYTE: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jbyte *) &result[0]) + 3); > >+ #else > > params[0].jint =3D *((jbyte *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 920,926 **** > >--- 944,954 ---- > > case SVM_TYPE_SHORT: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jshort *) &result[0]) + 2); > >+ #else > > params[0].jint =3D *((jshort *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 928,934 **** > >--- 956,966 ---- > > case SVM_TYPE_CHAR: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jchar *) &result[0]) + 2); > >+ #else > > params[0].jint =3D *((jchar *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 1238,1247 **** > > } > > break; > > =20 > >! case SVM_TYPE_BOOLEAN: > > { > >! /* don't forget about little/big endian alignment */ > > params[0].jint =3D *((jboolean *) &result[0]); > > frame->stack_size++; > > } > > break; > >--- 1270,1284 ---- > > } > > break; > > =20 > >! case SVM_TYPE_BOOLEAN: =20 > > { > >!=20 > >! #ifdef LIBFFIBUG > >! params[0].jint =3D *(((jboolean *) &result[0]) + 3); > >! #else > > params[0].jint =3D *((jboolean *) &result[0]); > >+ #endif > >+=20 > > frame->stack_size++; > > } > > break; > >*************** > >*** 1249,1255 **** > >--- 1286,1296 ---- > > case SVM_TYPE_BYTE: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jbyte *) &result[0]) + 3); > >+ #else > > params[0].jint =3D *((jbyte *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 1257,1263 **** > >--- 1298,1308 ---- > > case SVM_TYPE_SHORT: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jshort *) &result[0]) + 2); > >+ #else > > params[0].jint =3D *((jshort *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >*************** > >*** 1265,1271 **** > >--- 1310,1320 ---- > > case SVM_TYPE_CHAR: > > { > > /* don't forget about little/big endian alignment */ > >+ #ifdef LIBFFIBUG > >+ params[0].jint =3D *(((jchar *) &result[0]) + 2); > >+ #else > > params[0].jint =3D *((jchar *) &result[0]); > >+ #endif > > frame->stack_size++; > > } > > break; > >Index: sablevm-1.0.5/src/libsablevm/system.c > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file:=20 > >/home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/system.c,= v > >retrieving revision 1.1.1.1 > >diff -c -r1.1.1.1 system.c > >*** sablevm-1.0.5/src/libsablevm/system.c 13 Dec 2002 01:52:11 -0000=20 > >1.1.1.1 > >--- sablevm-1.0.5/src/libsablevm/system.c 18 Dec 2002 02:23:30 -0000 > >*************** > >*** 5,11 **** > > * modification of SableVM. * > > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ))=20 > >&& defined (__GNUC__)) > > =20 > > /* > > --------------------------------------------------------------------= -- > >--- 5,11 ---- > > * modification of SableVM. * > > * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ) ||=20 > >defined (__powerpc__)) && defined (__GNUC__)) > > =20 > > /* > > --------------------------------------------------------------------= -- > >*************** > >*** 109,114 **** > >--- 109,144 ---- > > result =3D __sync_bool_compare_and_swap (pword, old_value, new_val= ue); > > =20 > > #endif > >+=20 > >+ #if (defined (__powerpc__)) > >+=20 > >+ int result; > >+=20 > >+ /* > >+ * Adapted from the glibc-linuxthreads, file pt-machine.h > >+ * > >+ */ > >+ __asm__ __volatile__ ( > >+ "0: lwarx %0,0,%1 ;" > >+ " xor. %0,%3,%0;" > >+ " bne 1f;" > >+ " stwcx. %2,0,%1;" > >+ " bne- 0b;" > >+ "1: " > >+ : "=3D&r"(result) > >+ : "r"(pword), "r"(new_value), "r"(old_value) > >+ : "cr0", "memory"); > >+ /* This version of __compare_and_swap is to be used when acquiring > >+ a lock, so we don't need to worry about whether other memory > >+ operations have completed, but we do need to be sure that any l= oads > >+ after this point really occur after we have acquired the lock. = */ > >+ __asm__ __volatile__ ("isync" : : : "memory"); > >+=20 > >+ /* flip the value of result */ > >+ result =3D !result; > >+=20 > >+ #endif > >+=20 > > =20 > > return result ? JNI_TRUE : JNI_FALSE; > > } > >Index: sablevm-1.0.5/src/libsablevm/system.h > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file:=20 > >/home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/system.h,= v > >retrieving revision 1.1.1.1 > >diff -c -r1.1.1.1 system.h > >*** sablevm-1.0.5/src/libsablevm/system.h 13 Dec 2002 01:52:11 -0000=20 > >1.1.1.1 > >--- sablevm-1.0.5/src/libsablevm/system.h 18 Dec 2002 02:30:27 -0000 > >*************** > >*** 48,54 **** > > =20 > > */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ))=20 > >&& defined (__GNUC__)) > > =20 > > /* "inline" is now an official keyword since the latest C standard=20 > > (1999). > > So, it is a reasonable assuption to expect a target compiler to > >--- 48,54 ---- > > =20 > > */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ) ||=20 > >defined (__powerpc__)) && defined (__GNUC__)) > > =20 > > /* "inline" is now an official keyword since the latest C standard=20 > > (1999). > > So, it is a reasonable assuption to expect a target compiler to > >*************** > >*** 100,107 **** > >--- 100,120 ---- > > #define SVM_ALIGNMENT_POWER 3 /* 2 ^^ SVM_ALIGNMENT_POWER =3D=3D=20 > > SVM_ALIGNMENT */ > > #define SVM_PAGE_SIZE 16384 > > =20 > >+ #elif defined (__powerpc__) > >+=20 > >+ typedef _svmt_u32 _svmt_word; > >+=20 > >+ #define SVM_WORD_SIZE 4 /* size in bytes */ > >+ #define SVM_WORD_BIT_COUNT 32 /* size in bits */ > >+=20 > >+ /* see comments at the head of this file */ > >+ #define SVM_ALIGNMENT 8 > >+ #define SVM_ALIGNMENT_POWER 3 /* 2 ^^ SVM_ALIGNMENT_POWER =3D=3D=20 > >SVM_ALIGNMENT */ > >+ #define SVM_PAGE_SIZE 4096 > >+=20 > > #endif > > =20 > >+=20 > > /* FFI specific types */ > > #define ffi_type_float32 ffi_type_float > > #define ffi_type_float64 ffi_type_double > >*************** > >*** 163,165 **** > >--- 176,179 ---- > > #endif > > =20 > > #endif /* not SVM_SYSTEM_H */ > >+=20 > >Index: sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file:=20 > >/home/david/cvsroot/sablevm_ppc/sablevm-1.0.5/src/libsablevm/include/j= ni_system_specific.h,v > >retrieving revision 1.1.1.1 > >retrieving revision 1.2 > >diff -c -r1.1.1.1 -r1.2 > >*** sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h 13=20 > >Dec 2002 01:52:11 -0000 1.1.1.1 > >--- sablevm-1.0.5/src/libsablevm/include/jni_system_specific.h 13=20 > >Dec 2002 19:58:44 -0000 1.2 > >*************** > >*** 15,21 **** > > =20 > > /* alpha and i386 are identical here */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ))=20 > >&& defined (__GNUC__)) > > =20 > > #define JNICALL > > #define JNIEXPORT > >--- 15,21 ---- > > =20 > > /* alpha and i386 are identical here */ > > =20 > >! #if ((defined (__ia64__) || defined (__alpha__) || defined (__i386__= ) ||=20 > >defined (__powerpc__)) && defined (__GNUC__)) > > =20 > > #define JNICALL > > #define JNIEXPORT > >Index: sablevm-native-library-1.0.5/src/include/jni_system_specific.h > >=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > >RCS file:=20 > >/home/david/cvsroot/sablevm_ppc/sablevm-native-library-1.0.5/src/inclu= de/jni_system_specific.h,v > >retrieving revision 1.1.1.1 > >retrieving revision 1.2 > >diff -c -r1.1.1.1 -r1.2 > >*** sablevm-native-library-1.0.5/src/include/jni_system_specific.h 13=20 > >Dec 2002 01:52:11 -0000 1.1.1.1 > >--- sablevm-native-library-1.0.5/src/include/jni_system_specific.h 13=20 > >Dec 2002 19:59:23 -0000 1.2 > >*************** > >*** 8,14 **** > > =20 > > /* system specific primitive types */ > > =20 > >! #if (defined (__i386__) && defined (__GNUC__)) > > =20 > > /* legend: > > u =3D unsigned intger, s =3D signed integer, f =3D float, d =3D = double > >--- 8,14 ---- > > =20 > > /* system specific primitive types */ > > =20 > >! #if ((defined (__i386__) || defined (__powerpc__)) && defined (__GNU= C__)) > > =20 > > /* legend: > > u =3D unsigned intger, s =3D signed integer, f =3D float, d =3D = double >=20 > --=20 > Etienne M. Gagnon http://www.info.uqam.ca/~egagnon/ > SableVM: http://www.sablevm.org/ > SableCC: http://www.sablecc.org/ --=20 --- David B=E9langer Graduate Student School of Computer Science McGill University Office: MC226 Web page: http://www.cs.mcgill.ca/~dbelan2/ Public key: http://www.cs.mcgill.ca/~dbelan2/public_key.txt |