diff options
Diffstat (limited to 'package/java')
| -rw-r--r-- | package/java/Config.in | 11 | ||||
| -rw-r--r-- | package/java/classpath/Config.in | 11 | ||||
| -rw-r--r-- | package/java/classpath/classpath-avr32-endianness.patch | 29 | ||||
| -rw-r--r-- | package/java/classpath/classpath.mk | 94 | ||||
| -rw-r--r-- | package/java/concierge/Config.in | 11 | ||||
| -rw-r--r-- | package/java/concierge/concierge.mk | 40 | ||||
| -rw-r--r-- | package/java/concierge/files/concierge | 2 | ||||
| -rw-r--r-- | package/java/concierge/files/init.xargs | 10 | ||||
| -rw-r--r-- | package/java/jamvm/Config.in | 10 | ||||
| -rw-r--r-- | package/java/jamvm/jamvm-1.5.0.patch.avr32 | 1473 | ||||
| -rw-r--r-- | package/java/jamvm/jamvm.mk | 105 | ||||
| -rw-r--r-- | package/java/java.mk | 1 | 
12 files changed, 1797 insertions, 0 deletions
diff --git a/package/java/Config.in b/package/java/Config.in new file mode 100644 index 000000000..1ed0475a0 --- /dev/null +++ b/package/java/Config.in @@ -0,0 +1,11 @@ +menuconfig BR2_JAVA_SUPPORT +        bool "Java" +        default y +        help +          Support java programs (classpath, vm, osgi) + +if BR2_JAVA_SUPPORT +source "package/java/classpath/Config.in" +source "package/java/jamvm/Config.in" +source "package/java/concierge/Config.in" +endif diff --git a/package/java/classpath/Config.in b/package/java/classpath/Config.in new file mode 100644 index 000000000..efd6e0b7f --- /dev/null +++ b/package/java/classpath/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_CLASSPATH +	bool "classpath" +	default n + +	help +	  GNU Classpath, Essential Libraries for Java, is a GNU +	  project to create free core class libraries for use with +	  virtual machines and compilers for the java programming +	  language. + +	  http://www.classpath.org/ diff --git a/package/java/classpath/classpath-avr32-endianness.patch b/package/java/classpath/classpath-avr32-endianness.patch new file mode 100644 index 000000000..2bb25dda5 --- /dev/null +++ b/package/java/classpath/classpath-avr32-endianness.patch @@ -0,0 +1,29 @@ +diff -rup ../classpath-0.96.1.default/ChangeLog ./ChangeLog +--- ../classpath-0.96.1.default/ChangeLog       2007-10-16 17:35:33.000000000 ++0200 ++++ ./ChangeLog 2007-12-18 09:36:39.000000000 +0100 +@@ -1,3 +1,7 @@ ++2007-12-18  Leen Toelen  <toelen@gmail.com> ++ ++       * native/fdlibm/ieeefp.h: Added avr32 support ++ + 2007-10-16  Mark Wielaard  <mark@klomp.org> + +        * NEWS: Mention small compile/configure/build fixes. +diff -rup ../classpath-0.96.1.default/native/fdlibm/ieeefp.h +./native/fdlibm/ieeefp.h +--- ../classpath-0.96.1.default/native/fdlibm/ieeefp.h  2006-04-19 +19:55:13.000000000 +0200 ++++ ./native/fdlibm/ieeefp.h    2007-12-18 09:32:55.000000000 +0100 +@@ -87,6 +87,10 @@ + #define __IEEE_LITTLE_ENDIAN + #endif + ++#ifdef __AVR32__ ++#define __IEEE_BIG_ENDIAN ++#endif ++ + #ifdef __MIPSEL__ + #define __IEEE_LITTLE_ENDIAN + #endif + diff --git a/package/java/classpath/classpath.mk b/package/java/classpath/classpath.mk new file mode 100644 index 000000000..dfb69bea5 --- /dev/null +++ b/package/java/classpath/classpath.mk @@ -0,0 +1,94 @@ +############################################################# +# +# classpath 0.96.1 +# +############################################################# +CLASSPATH_VERSION = 0.96.1 +CLASSPATH_SOURCE = classpath-$(CLASSPATH_VERSION).tar.gz +CLASSPATH_SITE = $(BR2_GNU_MIRROR)/classpath +CLASSPATH_AUTORECONF = NO +CLASSPATH_INSTALL_STAGING = YES +CLASSPATH_INSTALL_TARGET = YES +CLASSPATH_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) install  +CLASSPATH_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install  + +CLASSPATH_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \ +		glib_cv_uscore=no ac_cv_func_strtod=yes \ +		ac_fsusage_space=yes fu_cv_sys_stat_statfs2_bsize=yes \ +		ac_cv_func_closedir_void=no ac_cv_func_getloadavg=no \ +		ac_cv_lib_util_getloadavg=no ac_cv_lib_getloadavg_getloadavg=no \ +		ac_cv_func_getgroups=yes ac_cv_func_getgroups_works=yes \ +		ac_cv_func_chown_works=yes ac_cv_have_decl_euidaccess=no \ +		ac_cv_func_euidaccess=no ac_cv_have_decl_strnlen=yes \ +		ac_cv_func_strnlen_working=yes ac_cv_func_lstat_dereferences_slashed_symlink=yes \ +		ac_cv_func_lstat_empty_string_bug=no ac_cv_func_stat_empty_string_bug=no \ +		vb_cv_func_rename_trailing_slash_bug=no ac_cv_have_decl_nanosleep=yes \ +		jm_cv_func_nanosleep_works=yes gl_cv_func_working_utimes=yes \ +		ac_cv_func_utime_null=yes ac_cv_have_decl_strerror_r=yes \ +		ac_cv_func_strerror_r_char_p=no jm_cv_func_svid_putenv=yes \ +		ac_cv_func_getcwd_null=yes ac_cv_func_getdelim=yes \ +		ac_cv_func_mkstemp=yes utils_cv_func_mkstemp_limitations=no \ +		utils_cv_func_mkdir_trailing_slash_bug=no ac_cv_func_memcmp_working=yes \ +		ac_cv_have_decl_malloc=yes gl_cv_func_malloc_0_nonnull=yes \ +		ac_cv_func_malloc_0_nonnull=yes ac_cv_func_calloc_0_nonnull=yes \ +		ac_cv_func_realloc_0_nonnull=yes jm_cv_func_gettimeofday_clobber=no \ +		gl_cv_func_working_readdir=yes jm_ac_cv_func_link_follows_symlink=no \ +		utils_cv_localtime_cache=no ac_cv_struct_st_mtim_nsec=no \ +		gl_cv_func_tzset_clobber=no gl_cv_func_getcwd_null=yes \ +		gl_cv_func_getcwd_path_max=yes ac_cv_func_fnmatch_gnu=yes \ +		am_getline_needs_run_time_check=no am_cv_func_working_getline=yes \ +		gl_cv_func_mkdir_trailing_slash_bug=no gl_cv_func_mkstemp_limitations=no \ +		ac_cv_func_working_mktime=yes jm_cv_func_working_re_compile_pattern=yes \ +		ac_use_included_regex=no gl_cv_c_restrict=no \ +		ac_cv_path_GLIB_GENMARSHAL=/usr/bin/glib-genmarshal \ +		ac_cv_prog_F77=no ac_cv_prog_CXX=no ac_cv_path_CUPS_CONFIG=no  + + +CLASSPATH_CONF_OPT = --target=$(GNU_TARGET_NAME) --host=$(GNU_TARGET_NAME) \ +		--build=$(GNU_HOST_NAME) --prefix=/usr \ +		--exec-prefix=/usr --bindir=/usr/bin \ +		--sbindir=/usr/sbin --libdir=/usr/lib \ +		--libexecdir=/usr/lib --sysconfdir=/etc \ +		--datadir=/usr/share --localstatedir=/var \ +		--includedir=/usr/include --mandir=/usr/man \ +		--infodir=/usr/info --enable-shared \ +		--enable-static \ +		--disable-glibtest --enable-explicit-deps=no \ +		--disable-debug PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ +		--disable-gconf-peer --disable-examples --disable-plugin + +CLASSPATH_DEPENDENCIES = uclibc png jpeg tiff + +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +	CLASSPATH_DEPENDENCIES+= alsa-lib +	CLASSPATH_CONF_OPT+= --enable-alsa +else  +	CLASSPATH_CONF_OPT+= --disable-alsa +endif + +ifeq ($(BR2_PACKAGE_QTOPIA4),y) +	CLASSPATH_DEPENDENCIES+= qtopia4 +	CLASSPATH_CONF_OPT+= --enable-qt-peer +else  +	CLASSPATH_CONF_OPT+= --disable-qt-peer +endif + +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +	CLASSPATH_DEPENDENCIES+= libgtk2 +	CLASSPATH_CONF_OPT+= --enable-gtk-peer +else  +	CLASSPATH_CONF_OPT+= --disable-gtk-peer +endif + +ifneq ($(BR2_PACKAGE_XSERVER_none),y) +	CLASSPATH_DEPENDENCIES+= $(XSERVER) +	CLASSPATH_CONF_OPT+= --with-x \ +		--x-includes=$(STAGING_DIR)/usr/include/X11 \ +		--x-libraries=$(STAGING_DIR)/usr/lib +else +	CLASSPATH_CONF_OPT+= --without-x  +endif + + + +$(eval $(call AUTOTARGETS,package,classpath)) diff --git a/package/java/concierge/Config.in b/package/java/concierge/Config.in new file mode 100644 index 000000000..649a24501 --- /dev/null +++ b/package/java/concierge/Config.in @@ -0,0 +1,11 @@ +config BR2_PACKAGE_CONCIERGE +	bool "concierge" +	default n +        depends on BR2_PACKAGE_JAMVM + +	help +	  Concierge is an optimized OSGi R3 framework implementations +	  with a file footprint of about 80 kBytes. This makes it +	  ideal for mobile or embedded devices. + +	  http://concierge.sourceforge.net/ diff --git a/package/java/concierge/concierge.mk b/package/java/concierge/concierge.mk new file mode 100644 index 000000000..68ca4165d --- /dev/null +++ b/package/java/concierge/concierge.mk @@ -0,0 +1,40 @@ +############################################################# +# +# concierge 1.0-RC2 +# +############################################################# +CONCIERGE_VERSION = 1.0_RC2 +CONCIERGE_SOURCE = concierge-$(CONCIERGE_VERSION).jar +CONCIERGE_SITE = http://ovh.dl.sourceforge.net/sourceforge/concierge/ +CONCIERGE_DIR=$(BUILD_DIR)/concierge-$(CONCIERGE_VERSION) +CONCIERGE_SITE_BUNDLES = http://concierge.sourceforge.net/bundles/ + +$(DL_DIR)/concierge: +	 mkdir -p $(DL_DIR)/concierge/ +	 $(WGET) -P $(DL_DIR)/concierge/ $(CONCIERGE_SITE)/concierge-$(CONCIERGE_VERSION).jar +	 $(WGET) -P $(DL_DIR)/concierge/ $(CONCIERGE_SITE_BUNDLES)shell-1.0.0.RC2.jar +	 $(WGET) -P $(DL_DIR)/concierge/ $(CONCIERGE_SITE_BUNDLES)service-tracker-1.0.0.RC2.jar +	 $(WGET) -P $(DL_DIR)/concierge/ $(CONCIERGE_SITE_BUNDLES)event-admin-1.0.0.RC2.jar + +$(TARGET_DIR)/usr/lib/concierge/: $(DL_DIR)/concierge +	mkdir -p $(TARGET_DIR)/usr/lib +	mkdir -p $(TARGET_DIR)/usr/lib/concierge +	cp -dpf $(DL_DIR)/concierge/* $(TARGET_DIR)/usr/lib/concierge/ +	cp -dpf package/concierge/files/init.xargs $(TARGET_DIR)/usr/lib/concierge/ +	touch -c $@ + +$(TARGET_DIR)/usr/bin/concierge:  +	cp -dpf package/concierge/files/concierge $(TARGET_DIR)/usr/bin/ +	chmod +x $(TARGET_DIR)/usr/bin/concierge +	touch -c $@ + +concierge: $(TARGET_DIR)/usr/lib/concierge $(TARGET_DIR)/usr/bin/concierge + +############################################################# +# +# Toplevel Makefile options +# +############################################################# +ifeq ($(strip $(BR2_PACKAGE_CONCIERGE)),y) +TARGETS+=concierge +endif diff --git a/package/java/concierge/files/concierge b/package/java/concierge/files/concierge new file mode 100644 index 000000000..c463753f2 --- /dev/null +++ b/package/java/concierge/files/concierge @@ -0,0 +1,2 @@ +#!/bin/sh +/usr/bin/jamvm -jar /usr/lib/concierge/concierge-1.0_RC2.jar diff --git a/package/java/concierge/files/init.xargs b/package/java/concierge/files/init.xargs new file mode 100644 index 000000000..7848721ce --- /dev/null +++ b/package/java/concierge/files/init.xargs @@ -0,0 +1,10 @@ +-init
 +-all
 +-Dch.ethz.iks.concierge.debug=true
 +-Dch.ethz.iks.concierge.log.enabled=true
 +-Dch.ethz.iks.concierge.log.level=4
 +
 +
 +#-istart shell-1.0.0.RC2.jar
 +#-istart service-tracker-1.0.0.RC2.jar
 +#-istart event-admin-1.0.0.RC2.jar
 diff --git a/package/java/jamvm/Config.in b/package/java/jamvm/Config.in new file mode 100644 index 000000000..53673c9e6 --- /dev/null +++ b/package/java/jamvm/Config.in @@ -0,0 +1,10 @@ +config BR2_PACKAGE_JAMVM +	bool "jamvm" +	default n +        depends on BR2_PACKAGE_CLASSPATH + +	help +	  JamVM is a new Java Virtual Machine which conforms to  +	  the JVM specification version 2 (blue book).  + +	  http://jamvm.sourceforge.net/ diff --git a/package/java/jamvm/jamvm-1.5.0.patch.avr32 b/package/java/jamvm/jamvm-1.5.0.patch.avr32 new file mode 100644 index 000000000..27c905ecd --- /dev/null +++ b/package/java/jamvm/jamvm-1.5.0.patch.avr32 @@ -0,0 +1,1473 @@ +diff -urpN jamvm-1.5.0/configure jamvm-1.5.0-avr32/configure +--- jamvm-1.5.0/configure	2007-10-29 06:37:06.000000000 +0100 ++++ jamvm-1.5.0-avr32/configure	2008-02-08 09:20:37.000000000 +0100 +@@ -2550,6 +2550,7 @@ i386-*-openbsd*) host_os=bsd libdl_neede + i386-*-freebsd*) host_os=bsd libdl_needed=no ;; + x86_64-*-linux*) host_os=linux ;; + hppa*-*-linux*) host_cpu=parisc host_os=linux ;; ++avr32*-*-linux*) host_cpu=avr32 host_os=linux ;; + mipsel-*-linux*) host_cpu=mips host_os=linux ;; + amd64-*-openbsd*) host_os=bsd libdl_needed=no ;; + amd64-*-freebsd*) host_os=bsd libdl_needed=no ;; +@@ -22839,7 +22840,7 @@ fi + ac_config_links="$ac_config_links src/arch.h:src/arch/$arch.h" +  +  +-ac_config_files="$ac_config_files Makefile src/Makefile src/interp/Makefile src/interp/engine/Makefile src/arch/Makefile src/os/Makefile src/os/linux/Makefile src/os/darwin/Makefile src/os/bsd/Makefile src/os/linux/powerpc/Makefile src/os/linux/arm/Makefile src/os/linux/i386/Makefile src/os/linux/x86_64/Makefile src/os/linux/parisc/Makefile src/os/linux/mips/Makefile src/os/darwin/i386/Makefile src/os/darwin/powerpc/Makefile src/os/bsd/powerpc/Makefile src/os/bsd/arm/Makefile src/os/bsd/i386/Makefile src/os/bsd/x86_64/Makefile lib/Makefile lib/java/Makefile lib/java/lang/Makefile lib/jamvm/Makefile lib/jamvm/java/Makefile lib/jamvm/java/lang/Makefile lib/java/lang/reflect/Makefile lib/java/security/Makefile lib/gnu/Makefile lib/sun/reflect/annotation/Makefile lib/sun/reflect//Makefile lib/sun/Makefile lib/gnu/classpath/Makefile" ++ac_config_files="$ac_config_files Makefile src/Makefile src/interp/Makefile src/interp/engine/Makefile src/arch/Makefile src/os/Makefile src/os/linux/Makefile src/os/darwin/Makefile src/os/bsd/Makefile src/os/linux/powerpc/Makefile src/os/linux/arm/Makefile src/os/linux/i386/Makefile src/os/linux/x86_64/Makefile src/os/linux/avr32/Makefile src/os/linux/parisc/Makefile src/os/linux/mips/Makefile src/os/darwin/i386/Makefile src/os/darwin/powerpc/Makefile src/os/bsd/powerpc/Makefile src/os/bsd/arm/Makefile src/os/bsd/i386/Makefile src/os/bsd/x86_64/Makefile lib/Makefile lib/java/Makefile lib/java/lang/Makefile lib/jamvm/Makefile lib/jamvm/java/Makefile lib/jamvm/java/lang/Makefile lib/java/lang/reflect/Makefile lib/java/security/Makefile lib/gnu/Makefile lib/sun/reflect/annotation/Makefile lib/sun/reflect//Makefile lib/sun/Makefile lib/gnu/classpath/Makefile" +  +  + cat >confcache <<\_ACEOF +@@ -23475,6 +23476,7 @@ do +     "src/os/linux/i386/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/linux/i386/Makefile" ;; +     "src/os/linux/x86_64/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/linux/x86_64/Makefile" ;; +     "src/os/linux/parisc/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/linux/parisc/Makefile" ;; ++    "src/os/linux/avr32/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/linux/avr32/Makefile" ;; +     "src/os/linux/mips/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/linux/mips/Makefile" ;; +     "src/os/darwin/i386/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/darwin/i386/Makefile" ;; +     "src/os/darwin/powerpc/Makefile") CONFIG_FILES="$CONFIG_FILES src/os/darwin/powerpc/Makefile" ;; +diff -urpN jamvm-1.5.0/src/alloc.c jamvm-1.5.0-avr32/src/alloc.c +--- jamvm-1.5.0/src/alloc.c	2007-10-22 01:24:22.000000000 +0200 ++++ jamvm-1.5.0-avr32/src/alloc.c	2008-02-08 09:20:38.000000000 +0100 +@@ -274,6 +274,11 @@ void initialiseAlloc(InitArgs *args) { + #else +     char *mem = (char*)mmap(0, args->max_heap, PROT_READ|PROT_WRITE, +                                                MAP_PRIVATE|MAP_ANON, -1, 0); ++//    char *mem = (char*)mmap(0, 8196, PROT_READ|PROT_WRITE, ++//                                               MAP_PRIVATE|MAP_ANON, -1, 0); ++//TODO: lto ++//jam_printf("trying to mmap max:%lo min:%lo heap\n",args->max_heap , args->max_heap); ++//jam_printf("mem: %d %d\n",mem,MAP_FAILED); +     if(mem == MAP_FAILED) { + #endif +         perror("Aborting the VM -- couldn't allocate the heap"); +@@ -2214,7 +2219,7 @@ void *sysMalloc(int size) { +     int n = size < sizeof(void*) ? sizeof(void*) : size; +     void *mem = malloc(n); +  +-    if(mem == NULL) { ++    if(mem == NULL && n != 0) { +         jam_fprintf(stderr, "Malloc failed - aborting VM...\n"); +         exitVM(1); +     } +diff -urpN jamvm-1.5.0/src/arch/avr32.h jamvm-1.5.0-avr32/src/arch/avr32.h +--- jamvm-1.5.0/src/arch/avr32.h	1970-01-01 01:00:00.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/arch/avr32.h	2008-02-08 09:20:41.000000000 +0100 +@@ -0,0 +1,109 @@ ++/* ++ * Copyright (C) 2003, 2004, 2005, 2006, 2007 ++ * Robert Lougher <rob@lougher.org.uk>. ++ * ++ * This file is part of JamVM. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2, ++ * or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++#define OS_ARCH "avr32" ++//#ifndef DEBUG ++//#define DEBUG ++//#endif ++ ++/* Override default min and max heap sizes.  AVR32 machines are ++   usually embedded, and the standard defaults are too large. */ ++#define DEFAULT_MAX_HEAP 8*MB ++#define DEFAULT_MIN_HEAP 1*MB ++ ++#define HANDLER_TABLE_T static const void ++#define DOUBLE_1_BITS 0x3ff0000000000000LL ++ ++#define READ_DBL(v,p,l)	v = ((u8)p[0]<<56)|((u8)p[1]<<48)|((u8)p[2]<<40) \ ++                            |((u8)p[3]<<32)|((u8)p[4]<<24)|((u8)p[5]<<16) \ ++                            |((u8)p[6]<<8)|(u8)p[7]; p+=8 ++ ++//extern void setDoublePrecision(); ++#define FPU_HACK ++ ++//#define COMPARE_AND_SWAP(addr, old_val, new_val)    ({char result;result;}) ++//static inline unsigned long __cmpxchg_u32(volatile int *m, unsigned int old, ++//					  unsigned int new) ++//{ ++//	int ret; ++//	//printf("compare and swap %d %d %s:line%d\n",old,new,__FILE__,__LINE__); ++//	asm volatile( ++//		"1:	ssrf	5\n" ++//		"	ld.w	%[ret], %[m]\n" ++//		"	cp.w		%[ret], %[old]\n" ++//		"	brne	2f\n" ++//		"	stcond	%[m], %[new]\n" ++//		"	brne	1b\n" ++//		"2:\n" ++//		: [ret] "=&r"(ret), [m] "=m"(*m) ++//		: "m"(*m), [new] "r"(new), [old] "r"(old) ++//		: "memory", "cc"); ++//	return ret; ++//} ++ ++//see C:\Cygwin\usr\local\avr32-linux\include\bits\atomicity.h ++//see http://www.avr32linux.org/twiki/bin/view/Main/AtomicOperations ++//see http://www.mail-archive.com/uclibc@uclibc.org/msg00914.html ++//http://www.avr32linux.org/twiki/pub/Main/MicroClibcPatches/uClibc-0.9.28-avr32-20060621.patch ++//http://www.google.com/codesearch?hl=en&q=+cmpxchg+avr32+show:WwwDfOAAdbA:L2BlPHy6h_g:nY7RakaTOnE&sa=N&cd=1&ct=rc&cs_p=http://gobo.calica.com/packages/official/Linux--2.6.20.4-r1--i686.tar.bz2&cs_f=Linux/2.6.20.4/Resources/Unmanaged/Files/Compile/Sources/linux-2.6.20.4/include/asm-avr32/system.h#first ++//#define  COMPARE_AND_SWAP(p, oldval, newval)({	\ ++//	printf("compare and swap %d %d %s:line%d\n",oldval,newval,__FILE__,__LINE__);	\  ++//	__cmpxchg_u32(p,oldval,newval);\ ++//}) ++ ++//	printf("compare and swap %d %d %s:line %d\n",old_val,new_val,__FILE__,__LINE__);  ++#define COMPARE_AND_SWAP(addr, old_val, new_val)	    			\ ++({                                                  	\ ++	int result;											\ ++	__asm__ __volatile__ ("								\ ++		1:	ssrf	5;									\ ++			ld.w	%[ret], %[m];						\ ++			cp.w	%[ret], %[old];						\ ++			brne	2f;									\ ++			stcond	%[m], %[new];						\ ++			brne	1b;									\ ++		2:"												\ ++		: [ret] "=&r" (result), [m] "=m" (*addr)		\ ++		: "m" (*addr), [old] "r" (old_val), [new] "r" (new_val)	\ ++		: "memory", "cc");								\ ++	result;												\ ++}) ++ ++//ssrf 5	:set lock bit ++//stcond	:store param2 when lock is set ++//sreq		:If equal set register to true or false ++//brne		:Branch when not equal ++//brne 1b	:When the lock wasn't set anymore, try again ++//label 1b 2f	:first label named 1/2 before/after ++#define FLUSH_CACHE(addr, length) ++ ++#define LOCKWORD_READ(addr) *addr ++#define LOCKWORD_WRITE(addr, value) *addr = value ++#define LOCKWORD_COMPARE_AND_SWAP(addr, old_val, new_val) \ ++        COMPARE_AND_SWAP(addr, old_val, new_val) ++ ++#define UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory") ++#define JMM_LOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory") ++#define JMM_UNLOCK_MBARRIER() __asm__ __volatile__ ("" ::: "memory") ++ ++//TODO: lto ++#define MBARRIER() __asm__ __volatile__ ("" ::: "memory") ++//#define MBARRIER() __asm__ __volatile__ ("lock; addl $0,0(%%esp)" ::: "memory") +diff -urpN jamvm-1.5.0/src/arch/Makefile.am jamvm-1.5.0-avr32/src/arch/Makefile.am +--- jamvm-1.5.0/src/arch/Makefile.am	2007-10-28 00:19:26.000000000 +0200 ++++ jamvm-1.5.0-avr32/src/arch/Makefile.am	2008-02-08 09:20:41.000000000 +0100 +@@ -19,4 +19,4 @@ + ## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + ## +  +-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h ++EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h avr32.h +diff -urpN jamvm-1.5.0/src/arch/Makefile.in jamvm-1.5.0-avr32/src/arch/Makefile.in +--- jamvm-1.5.0/src/arch/Makefile.in	2007-10-29 07:02:36.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/arch/Makefile.in	2008-02-08 09:20:41.000000000 +0100 +@@ -162,7 +162,7 @@ top_srcdir = @top_srcdir@ + use_zip_no = @use_zip_no@ + use_zip_yes = @use_zip_yes@ + with_classpath_install_dir = @with_classpath_install_dir@ +-EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h ++EXTRA_DIST = powerpc.h arm.h i386.h x86_64.h parisc.h mips.h avr32.h + all: all-am +  + .SUFFIXES: +diff -urpN jamvm-1.5.0/src/class.c jamvm-1.5.0-avr32/src/class.c +--- jamvm-1.5.0/src/class.c	2007-10-29 05:45:32.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/class.c	2008-02-08 09:20:37.000000000 +0100 +@@ -40,6 +40,8 @@ + #define SCAVENGE(ptr) FALSE + #define FOUND(ptr) ptr +  ++#define TRACE(fmt, ...) jam_printf(fmt, ## __VA_ARGS__) ++ + static int verbose; + static char *bootpath; + static char *classpath; +@@ -1273,6 +1275,9 @@ Class *findSystemClass0(char *classname) + } +  + Class *findSystemClass(char *classname) { ++#ifdef DEBUG ++  	TRACE(">>>>>>finding class: %s\n", classname); ++#endif +    Class *class = findSystemClass0(classname); +  +    if(!exceptionOccurred()) +@@ -1383,18 +1388,32 @@ Class *findClassFromClassLoader(char *cl + } +  + Object *getSystemClassLoader() { ++#ifdef DEBUG ++	printf("%s: %d: trying to find ClassLoader\n",__FILE__,__LINE__); ++#endif +     Class *class_loader = findSystemClass("java/lang/ClassLoader"); +  +     if(!exceptionOccurred()) { ++#ifdef DEBUG ++    	printf("%s: %d: found ClassLoader\n",__FILE__,__LINE__); ++#endif    	 +         MethodBlock *mb; +  +         if((mb = findMethod(class_loader, "getSystemClassLoader", +                                           "()Ljava/lang/ClassLoader;")) != NULL) { ++#ifdef DEBUG ++            printf("%s: %d: executing static SystemClassLoader",__FILE__,__LINE__); ++#endif ++                                          	 +             Object *system_loader = *(Object**)executeStaticMethod(class_loader, mb); +  +             if(!exceptionOccurred())  +                 return system_loader; +         } ++#ifdef DEBUG ++    }else{ ++    	printf("%s: %d: found ClassLoader WITH EXCEPTION\n",__FILE__,__LINE__); ++#endif +     } +     return NULL; + } +diff -urpN jamvm-1.5.0/src/interp/direct.c jamvm-1.5.0-avr32/src/interp/direct.c +--- jamvm-1.5.0/src/interp/direct.c	2007-10-26 05:10:47.000000000 +0200 ++++ jamvm-1.5.0-avr32/src/interp/direct.c	2008-02-08 09:20:40.000000000 +0100 +@@ -31,7 +31,7 @@ + #include "interp.h" +  + #ifdef TRACEDIRECT +-#define TRACE(fmt, ...) jam_printf(fmt, ## __VA_ARGS__) ++#define TRACE(fmt, ...) printf(fmt, ## __VA_ARGS__) + #else + #define TRACE(fmt, ...) + #endif +Binary files jamvm-1.5.0/src/interp/engine/compute_relocatability and jamvm-1.5.0-avr32/src/interp/engine/compute_relocatability differ +diff -urpN jamvm-1.5.0/src/os/linux/avr32/dll_md.c jamvm-1.5.0-avr32/src/os/linux/avr32/dll_md.c +--- jamvm-1.5.0/src/os/linux/avr32/dll_md.c	1970-01-01 01:00:00.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/os/linux/avr32/dll_md.c	2008-02-08 09:20:38.000000000 +0100 +@@ -0,0 +1,669 @@ ++/* ++ * Copyright (C) 2003, 2004, 2005, 2006, 2007 ++ * Robert Lougher <rob@lougher.org.uk>. ++ * ++ * This file is part of JamVM. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2, ++ * or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++#include "../../../jam.h" ++ ++#ifndef USE_FFI ++#include <string.h> ++#include "../../../sig.h" ++ ++#define RET_VOID    0 ++#define RET_DOUBLE  1 ++#define RET_LONG    2 ++#define RET_FLOAT   3 ++#define RET_DFLT    4 ++ ++int nativeExtraArg(MethodBlock *mb) { ++	//printf("!!!!!!!!!!nativeExtraArg (name=%s) (type=%s)!!!!!!!\n",mb->name,mb->type); ++    int len = strlen(mb->type); ++    if(mb->type[len-2] == ')') ++        switch(mb->type[len-1]) { ++            case 'V': ++                return RET_VOID; ++            case 'D': ++                return RET_DOUBLE; ++            case 'J': ++                return RET_LONG; ++            case 'F': ++                return RET_FLOAT; ++        } ++ ++    return RET_DFLT; ++} ++ ++//calls the f function pointer and takes care of the return type ++#define perform_f(label,...)													\ ++		switch(ret_type) {														\ ++        	case RET_VOID:														\ ++            	(*(void (*)())f)(__VA_ARGS__);									\ ++				goto label;														\ ++        	case RET_DOUBLE:													\ ++	        	*(double*)ostack = (*(double (*)())f)(__VA_ARGS__);				\ ++            	ostack += 2;													\ ++				goto label;														\ ++        	case RET_LONG:														\ ++	        	*(long long*)ostack = (*(long long (*)())f)(__VA_ARGS__);		\ ++            	ostack += 2;													\ ++				goto label;														\ ++        	case RET_FLOAT:														\ ++	        	*(float*)ostack = (*(float (*)())f)(__VA_ARGS__);				\ ++            	ostack++;														\ ++				goto label;														\ ++        	default:															\ ++	            *ostack++ = (*(u4 (*)())f)(__VA_ARGS__);						\ ++				goto label;														\ ++	    } ++ ++#define write_ops_to_stack(x)	    											\ ++	/*write x operands to the stack	*/											\ ++	int i;																		\ ++	for(i=0; i < x; i++){														\ ++		__asm__ __volatile__(													\ ++    	"ld.w r11,%0		\n\t"												\ ++    	"st.w --sp,r11		" 													\ ++    	:: "m"(*--opntr)														\ ++    	:"sp","r11");															\ ++	}										 ++	 ++u4 *callJNIMethod(void *env, Class *class, char *sig, int ret_type, u4 *ostack, unsigned char *f, int args) { ++	u4 *opntr = ostack + args; ++	int nrofopsonstack = 0; ++	if(class && args > 3){ ++		nrofopsonstack = args - 3; ++	}else if(class){ ++		nrofopsonstack = 0; ++	}else if(args > 4){ ++		nrofopsonstack = args -4; ++	}else{ ++		nrofopsonstack = 0; ++	} ++	 ++	if(args == 0){ ++		if(class){ ++			perform_f(done,env,class); ++		}else{ ++			perform_f(done,env); ++		} ++	}else if(args == 1){ ++		if(class){ ++    		perform_f(done,env,class,*--opntr); ++		}else{ ++    		perform_f(done,env,*--opntr); ++		} ++	}else if(args == 2){ ++		if(class){ ++    		perform_f(done,env,class,*--opntr,*--opntr); ++		}else{ ++    		perform_f(done,env,*--opntr,*--opntr); ++		} ++	}else if(args == 3){ ++		if(class){ ++    		perform_f(done,env,class,*--opntr,*--opntr,*--opntr); ++		}else{ ++    		perform_f(done,env,*--opntr,*--opntr,*--opntr); ++		} ++	}else{ ++		write_ops_to_stack(nrofopsonstack) ++		if(class){ ++    		perform_f(empty_stack,env,class,*--opntr,*--opntr,*--opntr); ++		}else{ ++    		perform_f(empty_stack,env,*--opntr,*--opntr,*--opntr,*--opntr); ++		} ++	} ++	 ++	empty_stack: ++	//Increment stack pointer to loose all operands we put there ++	if(nrofopsonstack > 0) { ++ 		__asm__ __volatile__("add sp,%0" ::"r"((nrofopsonstack) * sizeof(u4)): "sp"); ++	} ++		 ++	done: ++	return ostack; ++} ++ ++/* ++    int i; ++    int nrofopsonstack,nrofopsinregister; ++	u4 *opntr = ostack + args; ++	register int *r5 asm ("r5"); ++	*r5 = *f; ++	 ++//	register unsigned char *r6 asm ("r6"); ++//	register int *r7 asm ("r7"); ++//	register int *r8 asm ("r8"); ++//	register int *r9 asm ("r9"); ++//	register int *r10 asm ("r10"); ++//	register int *r11 asm ("r11"); ++//	register int *r12 asm ("r12"); ++	 ++	if(class && args > 3){ ++		nrofopsonstack = args - 3; ++		nrofopsinregister = 3; ++	}else if(class){ ++		nrofopsonstack = 0; ++		nrofopsinregister = args; ++	}else if(args > 4){ ++		nrofopsonstack = args -4; ++		nrofopsinregister = 4; ++	}else{ ++		nrofopsonstack = 0; ++		nrofopsinregister = args; ++	} ++ ++	//write all operands except 3 or 4 to the stack	 ++	for(i=0; i < nrofopsonstack; i++){ ++		//printf("!!!!!writing arg %d to stack\n",i); ++    	__asm__ __volatile__( ++    	"ld.w r11,%0		\n\t" ++    	"st.w --sp,r11		"  ++    	:: "m"(*--opntr) ++    	:"sp","r11"); ++	} ++ ++	 ++	//TODO: make sure none of the registers above have been changed ++	switch(ret_type) { ++        case RET_VOID: ++        	goto do_void_function; ++        case RET_DOUBLE: ++        	goto do_double_function; ++        case RET_LONG: ++        	goto do_longlong_function; ++        case RET_FLOAT: ++        	goto do_float_function; ++        default: ++        	goto do_default_function; ++    } ++ ++	do_void_function: ++			WRITE_PARAMS(label_void) ++			__asm__ __volatile__( ++				"icall r5" ++				::"m"(f)); ++			label_void: ++            (*(void (*)())f)(); ++            //printf("!!!!!!!!!!!!! called void JNIMethod %s!!!!!!!!!!\n",sig); ++            goto empty_stack; ++             ++	do_double_function: ++			WRITE_PARAMS(label_double) ++			label_double: ++        	*(double*)ostack = (*(double (*)())f)(); ++            ostack += 2; ++            //printf("!!!!!!!!!!!!! called double JNIMethod %s %l!!!!!!!!!!\n",sig,*ostack); ++            goto empty_stack; ++ ++	do_longlong_function: ++			WRITE_PARAMS(label_longlong) ++			label_longlong: ++        	*(long long*)ostack = (*(long long (*)())f)(); ++            ostack += 2; ++            //printf("!!!!!!!!!!!!! called long JNIMethod %s %l!!!!!!!!!!\n",sig,*ostack); ++            goto empty_stack; ++ ++	do_float_function: ++			WRITE_PARAMS(label_float) ++			label_float: ++        	*(float*)ostack = (*(float (*)())f)(); ++            ostack++; ++            //printf("!!!!!!!!!!!!! called float JNIMethod %s %f!!!!!!!!!!\n",sig,*ostack); ++            goto empty_stack; ++ ++	do_default_function: ++			WRITE_PARAMS(label_default) ++			label_default: ++            *ostack++ = (*(u4 (*)())f)(); ++            //printf("!!!!!!!!!!!!! called default JNIMethod %s!!!!!!!!!!\n",sig); ++        	goto empty_stack; ++     ++    empty_stack: ++ ++	//Get rid of the items on the stack ++	if(nrofopsonstack > 0) { ++ 		__asm__ __volatile__("add sp,%0" ::"r"(nrofopsonstack): "sp"); ++	} ++    return ostack;*/ ++ ++ ++//    	r8 = (u4*)(*--opntr); ++//    	r9 = (u4*)(*--opntr); ++//    	r10 = (u4*)(*--opntr); ++//    	r11 = (u4*)(*--opntr); ++//    	r12 = env; ++ ++ ++ ++/*     ++   	//write all operands to register ++    if(!class){ ++    	switch(nrofopsinregister){ ++    	case 4: ++   		__asm__ __volatile__( ++   			"ld.w r8,%[r8]		\n\t" ++   			"ld.w r9,%[r9]		\n\t" ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[r11]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r8]"m"(*--opntr),[r9]"m"(*--opntr),[r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env) ++   			:"r8","r9","r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 3: ++   		__asm__ __volatile__( ++   			"ld.w r9,%[r9]		\n\t" ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[r11]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r9]"m"(*--opntr),[r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env) ++   			:"r9","r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 2: ++   		__asm__ __volatile__( ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[r11]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env) ++   			:"r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 1: ++   		__asm__ __volatile__( ++   			"ld.w r11,%[r11]	\n\t" ++   			"ld.w r12,%[env]" ++   			::[r11]"m"(*--opntr),[env]"m"(env) ++   			:"r11","r12" ++   			); ++   			goto select_function; ++   		case 0: ++   		__asm__ __volatile__( ++   			"ld.w r12,%[env]" ++   			::[env]"m"(env) ++   			:"r12" ++   			); ++   			goto select_function; ++   		} ++    }else{//class needs to be written to r11  ++    	switch(nrofopsinregister){ ++    	case 3: ++   		__asm__ __volatile__( ++   			"ld.w r8,%[r8]		\n\t" ++   			"ld.w r9,%[r9]		\n\t" ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[class]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r8]"m"(*--opntr),[r9]"m"(*--opntr),[r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env) ++   			:"r8","r9","r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 2: ++   		__asm__ __volatile__( ++   			"ld.w r9,%[r9]		\n\t" ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[class]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r9]"m"(*--opntr),[r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env) ++   			:"r9","r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 1: ++   		__asm__ __volatile__( ++   			"ld.w r10,%[r10]	\n\t" ++   			"ld.w r11,%[class]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env) ++   			:"r10","r11","r12" ++   			); ++   			goto select_function; ++    	case 0: ++   		__asm__ __volatile__( ++   			"ld.w r11,%[class]	\n\t" ++   			"ld.w r12,%[env]" ++   			:: [class]"m"(class),[env]"m"(env) ++   			:"r10","r11","r12" ++   			); ++   			goto select_function; ++    	} ++    } ++	select_function: //This label is put here to make some cleaner assembler jumps above ++	*/ ++ ++//    int isstatic; ++//    if(class){ ++//    	isstatic = 1;  ++//    }else{ ++//    	isstatic = 0; ++//    } ++//    printf("!!!!!!!!!!!!! calling JNIMethod (sig:%s) (type:%d) (argcount:%d) (static:%d)!!!!!!!!!!\n",sig,ret_type,args,isstatic); ++ ++//Dit werkt!!!     ++//    if(args == 3 && isstatic == 0 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,*--opntr,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++/* ++    u4 *opntr = ostack + args; ++    long long *result; ++	if(class){ ++		//printf("I am static!!!!!!!\n"); ++		if(args == 0){ ++      		//*ostack = (*(u4 (*)())f)(env,class); ++      		*result = (*(long long (*)())f)(env,class); ++    	}else if(args == 1){ ++       		*result = (*(long long (*)())f)(env,class,*--opntr); ++       	}else if(args == 2){ ++       		*result = (*(long long (*)())f)(env,class,*--opntr,*--opntr); ++       	}else if(args == 3){ ++       		*result = (*(long long (*)())f)(env,class,*--opntr,*--opntr,*--opntr); ++       	}else if(args == 4){ ++       		*result = (*(long long (*)())f)(env,class,*--opntr,*--opntr,*--opntr,*--opntr); ++       	}else if(args == 5){ ++       		*result = (*(long long (*)())f)(env,class,*--opntr,*--opntr,*--opntr,*--opntr,*--opntr); ++       	} ++	}else{ ++      	//printf("I am not static!!!!!!!\n"); ++		if(args == 0){ ++       		*result = (*(long long (*)())f)(env); ++       	}else if(args == 1){ ++       		*result = (*(long long (*)())f)(env,*--opntr); ++       	}else if(args == 2){ ++       		*result = (*(long long (*)())f)(env,*--opntr,*--opntr); ++       	}else if(args == 3){ ++       		*result = (*(long long (*)())f)(env,*--opntr,*--opntr,*--opntr); ++       	}else if(args == 4){ ++       		*result = (*(long long (*)())f)(env,*--opntr,*--opntr,*--opntr,*--opntr); ++       	}else if(args == 5){ ++       		*result = (*(long long (*)())f)(env,*--opntr,*--opntr,*--opntr,*--opntr,*--opntr); ++       	} ++	} ++	 ++	switch(ret_type) { ++        case RET_VOID: ++			printf("-------->Performed void function %s\n",sig); ++            break; ++ ++        case RET_DOUBLE: ++        	*(double*)ostack = *(double(*))result; ++        	ostack += 2; ++			printf("-------->Performed double function %s,casting to %d\n",sig, ret_type); ++        	//printf("returned a double %f\n",*ostack); ++            break; ++ ++        case RET_LONG: ++        	*(long long*)ostack = *(long long(*))result; ++        	ostack += 2; ++			printf("-------->Performed long function %s,casting to %d\n",sig, ret_type); ++        	//printf("returned a long %l\n",*ostack); ++            break; ++ ++        case RET_FLOAT: ++        	*(float*)ostack = *(float(*))result; ++        	ostack++; ++			printf("-------->Performed float function %s,casting to %d\n",sig, ret_type); ++        	//printf("returned a float %f\n",*ostack); ++            break; ++ ++        default: ++        	*ostack++ = *(u4(*))result; ++            //ostack++; ++			printf("-------->Performed default function %s,casting to %d\n",sig, ret_type); ++        	//printf("returned a default %d\n",*ostack); ++        	break; ++    } ++    return ostack; ++    */ ++ ++ ++ ++ ++//    if(args == 3 && isstatic == 0 && ret_type == RET_DFLT){ ++//       printf("I am here!!!!!!!\n"); ++//       u4 *result = (*(u4 (*)())f)(env,*--opntr,*--opntr,*--opntr); ++//       *ostack++ = result; ++//       //*ostack++ = (*(u4 (*)())f)(env,*--opntr,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++//    if(args == 2 && isstatic == 0 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++//    if(args == 1 && isstatic == 0 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,*--opntr); ++//	   return ostack; ++//    } ++//     ++//    if(args == 6 && isstatic == 1 && ret_type == RET_DFLT){ ++//       printf("I am here for 7 args..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,class,*--opntr,*--opntr,*--opntr,*--opntr,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++//    if(args == 4 && isstatic == 1 && ret_type == RET_DFLT){ ++//       printf("I am here for 5 args..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,class,*--opntr,*--opntr,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++//    if(args == 3 && isstatic == 1 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,class,*--opntr,*--opntr,*--opntr); ++//	   return ostack; ++//    } ++//    if(args == 2 && isstatic == 1 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//      *ostack++ = (*(u4 (*)())f)(env,class,*--opntr,*--opntr); ++//	   return ostack; ++//   } ++//    if(args == 1 && isstatic == 1 && ret_type == RET_DFLT){ ++//       printf("I am here..\n"); ++//       *ostack++ = (*(u4 (*)())f)(env,class,*--opntr); ++//	   return ostack; ++//    } ++     ++    //int i; ++ ++    //for(i = 0; i < args; i++){ ++    //	printf("!!!!!should write arg %d\n",i); ++    	//__asm__ __volatile__("ld.w r11,%0" :: "m"(*--opntr):"r11"); ++        //__asm__ __volatile__("st.w --sp,r11" ::: "sp","r11"); ++    //} ++ ++//	int i=args; ++//    if(class) { ++//    	for(i=args;i>3;i--){ ++//	    	__asm__ __volatile__("ld.w r8,%0" :: "m"(*--opntr):"r8"); ++//    		__asm__ __volatile__("st.w --sp,r8" ::: "sp","r8"); ++//    	} ++//    	if(args >= 3){ ++//    		__asm__ __volatile__("ld.w r8,%0" :: "m"(*--opntr):"r8"); ++//    	} ++//    	if(args >= 2){ ++//    		__asm__ __volatile__("ld.w r9,%0" :: "m"(*--opntr):"r9"); ++//    	} ++//    	if(args >= 1){ ++//    		__asm__ __volatile__("ld.w r10,%0" :: "m"(*--opntr):"r10"); ++//    	} ++//    	__asm__ __volatile__("ld.w r11,%0" :: "m"(class):"r11"); ++//	   	__asm__ __volatile__("ld.w r12,%0" :: "m"(env):"r12"); ++//    }else{//static, don't add class variable ++//	   	for(i=args;i>4;i--){ ++//	   		//r8 will be reused by the last register argument ++//    		__asm__ __volatile__("ld.w r8,%0" :: "m"(*--opntr):"r8"); ++//    		__asm__ __volatile__("st.w --sp,r8" ::: "sp","r8"); ++//    	} ++//    	if(args >= 4){ ++//    		__asm__ __volatile__("ld.w r8,%0" :: "m"(*--opntr):"r8"); ++//    	} ++//    	if(args >= 3){ ++//    		__asm__ __volatile__("ld.w r9,%0" :: "m"(*--opntr):"r9"); ++//    	} ++//    	if(args >= 2){ ++//    		__asm__ __volatile__("ld.w r10,%0" :: "m"(*--opntr):"r10"); ++//    	} ++//    	if(args >= 1){ ++//    		__asm__ __volatile__("ld.w r11,%0" :: "m"(*--opntr):"r11"); ++//    	} ++//    	__asm__ __volatile__("ld.w r12,%0" :: "m"(env):"r12"); ++//    } ++ ++//    printf("!!!!!pushing environment to r12\n"); ++ ++    //printf("!!!!!!!!!!!!! switching ret_type %s %d ,nr of args: %d!!!!!!!!!!\n",sig, ret_type,args); ++//    switch(ret_type) { ++//        case RET_VOID: ++//            (*(void (*)())f)(); ++//            //printf("!!!!!!!!!!!!! called void JNIMethod %s!!!!!!!!!!\n",sig); ++//            break; ++// ++//        case RET_DOUBLE: ++//        	*(double*)ostack = (*(double (*)())f)(); ++//            ostack += 2; ++//            //printf("!!!!!!!!!!!!! called double JNIMethod %s %l!!!!!!!!!!\n",sig,*ostack); ++//            break; ++// ++//        case RET_LONG: ++//        	*(long long*)ostack = (*(long long (*)())f)(); ++//            ostack += 2; ++//            //printf("!!!!!!!!!!!!! called long JNIMethod %s %l!!!!!!!!!!\n",sig,*ostack); ++//            break; ++// ++//        case RET_FLOAT: ++//        	*(float*)ostack = (*(float (*)())f)(); ++//            ostack++; ++//            //printf("!!!!!!!!!!!!! called float JNIMethod %s %f!!!!!!!!!!\n",sig,*ostack); ++//            break; ++// ++//        default: ++//            *ostack++ = (*(u4 (*)())f)(); ++//            //printf("!!!!!!!!!!!!! called default JNIMethod %s!!!!!!!!!!\n",sig); ++//        	break; ++//    } ++// ++// if(class && args > 3) { ++// 		int to_add = args-3; ++// 		__asm__ __volatile__("add sp,%0" ::"r"(to_add): "sp"); ++// }else if(!class && args > 4){ ++// 		int to_add = args-4; ++// 		__asm__ __volatile__("add sp,%0" ::"r"(to_add): "sp"); ++// } ++//    //printf("!!!!!!!!!!!!! returning JNIMethod (sig:%s) (type:%d) (argcount:%d)!!!!!!!!!!\n",sig,ret_type,args); ++//    //printf("!!!!!!!!!!!!! returning %s %d ,nr of args: %d!!!!!!!!!!\n",sig, ret_type,args); ++//    //printf("!!!!!!!!!!!!! returning JNIMethod !!!!!!!!!!\n"); ++//    //__asm__ __volatile__ ("addl %0,%%esp" :: "r" ((args + 1) * sizeof(u4)) : "cc", "sp"); ++//     ++//    return ostack; ++ ++ ++//write all operands, class and env to register ++#define WRITE_PARAMS(label)								\ ++    if(!class){											\ ++    	switch(nrofopsinregister){						\ ++    	case 4:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r8,%[r8]		\n\t"					\ ++   			"ld.w r9,%[r9]		\n\t"					\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[r11]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r8]"m"(*--opntr),[r9]"m"(*--opntr),[r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env)						\ ++   			:"r8","r9","r10","r11","r12"				\ ++   			);											\ ++   			goto label;									\ ++    	case 3:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r9,%[r9]		\n\t"					\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[r11]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r9]"m"(*--opntr),[r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env)						\ ++   			:"r9","r10","r11","r12"						\ ++   			);											\ ++   			goto label;									\ ++    	case 2:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[r11]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r10]"m"(*--opntr),[r11]"m"(*--opntr),[env]"m"(env)						\ ++   			:"r10","r11","r12"							\ ++   			);											\ ++   			goto label;									\ ++    	case 1:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r11,%[r11]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			::[r11]"m"(*--opntr),[env]"m"(env)			\ ++   			:"r11","r12"								\ ++   			);											\ ++   			goto label;									\ ++   		case 0:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r12,%[env]"							\ ++   			::[env]"m"(env)								\ ++   			:"r12"										\ ++   			);											\ ++   			goto label;									\ ++   		}												\ ++    }else{												\ ++    	switch(nrofopsinregister){						\ ++    	case 3:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r8,%[r8]		\n\t"					\ ++   			"ld.w r9,%[r9]		\n\t"					\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[class]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r8]"m"(*--opntr),[r9]"m"(*--opntr),[r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env)						\ ++   			:"r8","r9","r10","r11","r12"				\ ++   			);											\ ++   			goto label;									\ ++    	case 2:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r9,%[r9]		\n\t"					\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[class]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r9]"m"(*--opntr),[r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env)						\ ++   			:"r9","r10","r11","r12"						\ ++   			);											\ ++   			goto label;									\ ++    	case 1:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r10,%[r10]	\n\t"					\ ++   			"ld.w r11,%[class]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [r10]"m"(*--opntr),[class]"m"(class),[env]"m"(env)						\ ++   			:"r10","r11","r12"							\ ++   			);											\ ++   			goto label;									\ ++    	case 0:											\ ++   		__asm__ __volatile__(							\ ++   			"ld.w r11,%[class]	\n\t"					\ ++   			"ld.w r12,%[env]"							\ ++   			:: [class]"m"(class),[env]"m"(env)			\ ++   			:"r10","r11","r12"							\ ++   			);											\ ++   			goto label;									\ ++    	}												\ ++    }													\ ++	//This label is put here to make some cleaner assembler jumps above ++#endif +diff -urpN jamvm-1.5.0/src/os/linux/avr32/init.c jamvm-1.5.0-avr32/src/os/linux/avr32/init.c +--- jamvm-1.5.0/src/os/linux/avr32/init.c	1970-01-01 01:00:00.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/os/linux/avr32/init.c	2008-02-08 09:20:38.000000000 +0100 +@@ -0,0 +1,39 @@ ++/* ++ * Copyright (C) 2003, 2004, 2006, 2007 ++ * Robert Lougher <rob@lougher.org.uk>. ++ * ++ * This file is part of JamVM. ++ * ++ * This program is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License ++ * as published by the Free Software Foundation; either version 2, ++ * or (at your option) any later version. ++ * ++ * This program is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the ++ * GNU General Public License for more details. ++ * ++ * You should have received a copy of the GNU General Public License ++ * along with this program; if not, write to the Free Software ++ * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++ */ ++ ++//#include <fpu_control.h> ++//#include <stdio.h> ++ ++/* Change floating point precision to double (64-bit) from ++ * the extended (80-bit) Linux default. */ ++ ++//void setDoublePrecision() { ++//    fpu_control_t cw; ++// ++//    _FPU_GETCW(cw); ++//    cw &= ~_FPU_EXTENDED; ++//    cw |= _FPU_DOUBLE; ++//    _FPU_SETCW(cw); ++//} ++ ++void initialisePlatform() { ++	//TODO: is this needed for avr32?    setDoublePrecision(); ++} +diff -urpN jamvm-1.5.0/src/os/linux/avr32/Makefile.am jamvm-1.5.0-avr32/src/os/linux/avr32/Makefile.am +--- jamvm-1.5.0/src/os/linux/avr32/Makefile.am	1970-01-01 01:00:00.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/os/linux/avr32/Makefile.am	2008-02-08 09:20:38.000000000 +0100 +@@ -0,0 +1,25 @@ ++## ++## Copyright (C) 2003, 2004, 2005, 2006, 2007 ++## Robert Lougher <rob@lougher.org.uk>. ++## ++## This file is part of JamVM. ++## ++## This program is free software; you can redistribute it and/or ++## modify it under the terms of the GNU General Public License ++## as published by the Free Software Foundation; either version 2, ++## or (at your option) any later version. ++## ++## This program is distributed in the hope that it will be useful, ++## but WITHOUT ANY WARRANTY; without even the implied warranty of ++## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the ++## GNU General Public License for more details. ++## ++## You should have received a copy of the GNU General Public License ++## along with this program; if not, write to the Free Software ++## Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ++## ++ ++noinst_LTLIBRARIES = libnative.la ++libnative_la_SOURCES = init.c dll_md.c ++ ++AM_CPPFLAGS = -I$(top_builddir)/src +diff -urpN jamvm-1.5.0/src/os/linux/avr32/Makefile.in jamvm-1.5.0-avr32/src/os/linux/avr32/Makefile.in +--- jamvm-1.5.0/src/os/linux/avr32/Makefile.in	1970-01-01 01:00:00.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/os/linux/avr32/Makefile.in	2008-02-08 09:20:38.000000000 +0100 +@@ -0,0 +1,446 @@ ++# Makefile.in generated by automake 1.10 from Makefile.am. ++# @configure_input@ ++ ++# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, ++# 2003, 2004, 2005, 2006  Free Software Foundation, Inc. ++# This Makefile.in is free software; the Free Software Foundation ++# gives unlimited permission to copy and/or distribute it, ++# with or without modifications, as long as this notice is preserved. ++ ++# This program is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without ++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A ++# PARTICULAR PURPOSE. ++ ++@SET_MAKE@ ++ ++VPATH = @srcdir@ ++pkgdatadir = $(datadir)/@PACKAGE@ ++pkglibdir = $(libdir)/@PACKAGE@ ++pkgincludedir = $(includedir)/@PACKAGE@ ++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd ++install_sh_DATA = $(install_sh) -c -m 644 ++install_sh_PROGRAM = $(install_sh) -c ++install_sh_SCRIPT = $(install_sh) -c ++INSTALL_HEADER = $(INSTALL_DATA) ++transform = $(program_transform_name) ++NORMAL_INSTALL = : ++PRE_INSTALL = : ++POST_INSTALL = : ++NORMAL_UNINSTALL = : ++PRE_UNINSTALL = : ++POST_UNINSTALL = : ++build_triplet = @build@ ++host_triplet = @host@ ++subdir = src/os/linux/avr32 ++DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \ ++	$(top_srcdir)/configure.ac ++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ ++	$(ACLOCAL_M4) ++mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs ++CONFIG_HEADER = $(top_builddir)/src/config.h ++CONFIG_CLEAN_FILES = ++LTLIBRARIES = $(noinst_LTLIBRARIES) ++libnative_la_LIBADD = ++am_libnative_la_OBJECTS = init.lo dll_md.lo ++libnative_la_OBJECTS = $(am_libnative_la_OBJECTS) ++DEFAULT_INCLUDES = -I. -I$(top_builddir)/src@am__isrc@ ++depcomp = $(SHELL) $(top_srcdir)/depcomp ++am__depfiles_maybe = depfiles ++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ ++	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++	--mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ ++	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++CCLD = $(CC) ++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ ++	--mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ ++	$(LDFLAGS) -o $@ ++SOURCES = $(libnative_la_SOURCES) ++DIST_SOURCES = $(libnative_la_SOURCES) ++ETAGS = etags ++CTAGS = ctags ++DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ++ACLOCAL = @ACLOCAL@ ++ALLOCA = @ALLOCA@ ++AMTAR = @AMTAR@ ++AR = @AR@ ++AUTOCONF = @AUTOCONF@ ++AUTOHEADER = @AUTOHEADER@ ++AUTOMAKE = @AUTOMAKE@ ++AWK = @AWK@ ++CC = @CC@ ++CCAS = @CCAS@ ++CCASDEPMODE = @CCASDEPMODE@ ++CCASFLAGS = @CCASFLAGS@ ++CCDEPMODE = @CCDEPMODE@ ++CFLAGS = @CFLAGS@ ++CPP = @CPP@ ++CPPFLAGS = @CPPFLAGS@ ++CXX = @CXX@ ++CXXCPP = @CXXCPP@ ++CXXDEPMODE = @CXXDEPMODE@ ++CXXFLAGS = @CXXFLAGS@ ++CYGPATH_W = @CYGPATH_W@ ++DEFS = @DEFS@ ++DEPDIR = @DEPDIR@ ++ECHO = @ECHO@ ++ECHO_C = @ECHO_C@ ++ECHO_N = @ECHO_N@ ++ECHO_T = @ECHO_T@ ++EGREP = @EGREP@ ++EXEEXT = @EXEEXT@ ++F77 = @F77@ ++FFLAGS = @FFLAGS@ ++GREP = @GREP@ ++INSTALL = @INSTALL@ ++INSTALL_DATA = @INSTALL_DATA@ ++INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++INSTALL_SCRIPT = @INSTALL_SCRIPT@ ++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ ++JAVAC = @JAVAC@ ++LDFLAGS = @LDFLAGS@ ++LIBOBJS = @LIBOBJS@ ++LIBS = @LIBS@ ++LIBTOOL = @LIBTOOL@ ++LN_S = @LN_S@ ++LTLIBOBJS = @LTLIBOBJS@ ++MAINT = @MAINT@ ++MAKEINFO = @MAKEINFO@ ++MKDIR_P = @MKDIR_P@ ++OBJEXT = @OBJEXT@ ++PACKAGE = @PACKAGE@ ++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ ++PACKAGE_NAME = @PACKAGE_NAME@ ++PACKAGE_STRING = @PACKAGE_STRING@ ++PACKAGE_TARNAME = @PACKAGE_TARNAME@ ++PACKAGE_VERSION = @PACKAGE_VERSION@ ++PATH_SEPARATOR = @PATH_SEPARATOR@ ++RANLIB = @RANLIB@ ++SED = @SED@ ++SET_MAKE = @SET_MAKE@ ++SHELL = @SHELL@ ++STRIP = @STRIP@ ++VERSION = @VERSION@ ++abs_builddir = @abs_builddir@ ++abs_srcdir = @abs_srcdir@ ++abs_top_builddir = @abs_top_builddir@ ++abs_top_srcdir = @abs_top_srcdir@ ++ac_ct_CC = @ac_ct_CC@ ++ac_ct_CXX = @ac_ct_CXX@ ++ac_ct_F77 = @ac_ct_F77@ ++am__include = @am__include@ ++am__leading_dot = @am__leading_dot@ ++am__quote = @am__quote@ ++am__tar = @am__tar@ ++am__untar = @am__untar@ ++arch = @arch@ ++bindir = @bindir@ ++build = @build@ ++build_alias = @build_alias@ ++build_cpu = @build_cpu@ ++build_os = @build_os@ ++build_vendor = @build_vendor@ ++builddir = @builddir@ ++datadir = @datadir@ ++datarootdir = @datarootdir@ ++docdir = @docdir@ ++dvidir = @dvidir@ ++exec_prefix = @exec_prefix@ ++host = @host@ ++host_alias = @host_alias@ ++host_cpu = @host_cpu@ ++host_os = @host_os@ ++host_vendor = @host_vendor@ ++htmldir = @htmldir@ ++includedir = @includedir@ ++infodir = @infodir@ ++install_sh = @install_sh@ ++interp_cflags = @interp_cflags@ ++libdir = @libdir@ ++libexecdir = @libexecdir@ ++localedir = @localedir@ ++localstatedir = @localstatedir@ ++mandir = @mandir@ ++mkdir_p = @mkdir_p@ ++oldincludedir = @oldincludedir@ ++os = @os@ ++pdfdir = @pdfdir@ ++prefix = @prefix@ ++program_transform_name = @program_transform_name@ ++psdir = @psdir@ ++sbindir = @sbindir@ ++sharedstatedir = @sharedstatedir@ ++srcdir = @srcdir@ ++sysconfdir = @sysconfdir@ ++target_alias = @target_alias@ ++top_builddir = @top_builddir@ ++top_srcdir = @top_srcdir@ ++use_zip_no = @use_zip_no@ ++use_zip_yes = @use_zip_yes@ ++with_classpath_install_dir = @with_classpath_install_dir@ ++noinst_LTLIBRARIES = libnative.la ++libnative_la_SOURCES = init.c dll_md.c ++AM_CPPFLAGS = -I$(top_builddir)/src ++all: all-am ++ ++.SUFFIXES: ++.SUFFIXES: .c .lo .o .obj ++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps) ++	@for dep in $?; do \ ++	  case '$(am__configure_deps)' in \ ++	    *$$dep*) \ ++	      cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ ++		&& exit 0; \ ++	      exit 1;; \ ++	  esac; \ ++	done; \ ++	echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu  src/os/linux/avr32/Makefile'; \ ++	cd $(top_srcdir) && \ ++	  $(AUTOMAKE) --gnu  src/os/linux/avr32/Makefile ++.PRECIOUS: Makefile ++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status ++	@case '$?' in \ ++	  *config.status*) \ ++	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ ++	  *) \ ++	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ ++	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ ++	esac; ++ ++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) ++	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) ++	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) ++	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ++ ++clean-noinstLTLIBRARIES: ++	-test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) ++	@list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ ++	  dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ ++	  test "$$dir" != "$$p" || dir=.; \ ++	  echo "rm -f \"$${dir}/so_locations\""; \ ++	  rm -f "$${dir}/so_locations"; \ ++	done ++libnative.la: $(libnative_la_OBJECTS) $(libnative_la_DEPENDENCIES)  ++	$(LINK)  $(libnative_la_OBJECTS) $(libnative_la_LIBADD) $(LIBS) ++ ++mostlyclean-compile: ++	-rm -f *.$(OBJEXT) ++ ++distclean-compile: ++	-rm -f *.tab.c ++ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dll_md.Plo@am__quote@ ++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@ ++ ++.c.o: ++@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@	$(COMPILE) -c $< ++ ++.c.obj: ++@am__fastdepCC_TRUE@	$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` ++@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@	$(COMPILE) -c `$(CYGPATH_W) '$<'` ++ ++.c.lo: ++@am__fastdepCC_TRUE@	$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< ++@am__fastdepCC_TRUE@	mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ ++@AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ ++@am__fastdepCC_FALSE@	$(LTCOMPILE) -c -o $@ $< ++ ++mostlyclean-libtool: ++	-rm -f *.lo ++ ++clean-libtool: ++	-rm -rf .libs _libs ++ ++ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) ++	list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ ++	unique=`for i in $$list; do \ ++	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++	  done | \ ++	  $(AWK) '    { files[$$0] = 1; } \ ++	       END { for (i in files) print i; }'`; \ ++	mkid -fID $$unique ++tags: TAGS ++ ++TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \ ++		$(TAGS_FILES) $(LISP) ++	tags=; \ ++	here=`pwd`; \ ++	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \ ++	unique=`for i in $$list; do \ ++	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++	  done | \ ++	  $(AWK) '    { files[$$0] = 1; } \ ++	       END { for (i in files) print i; }'`; \ ++	if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ ++	  test -n "$$unique" || unique=$$empty_fix; \ ++	  $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ ++	    $$tags $$unique; \ ++	fi ++ctags: CTAGS ++CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \ ++		$(TAGS_FILES) $(LISP) ++	tags=; \ ++	here=`pwd`; \ ++	list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \ ++	unique=`for i in $$list; do \ ++	    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ ++	  done | \ ++	  $(AWK) '    { files[$$0] = 1; } \ ++	       END { for (i in files) print i; }'`; \ ++	test -z "$(CTAGS_ARGS)$$tags$$unique" \ ++	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ ++	     $$tags $$unique ++ ++GTAGS: ++	here=`$(am__cd) $(top_builddir) && pwd` \ ++	  && cd $(top_srcdir) \ ++	  && gtags -i $(GTAGS_ARGS) $$here ++ ++distclean-tags: ++	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags ++ ++distdir: $(DISTFILES) ++	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ ++	list='$(DISTFILES)'; \ ++	  dist_files=`for file in $$list; do echo $$file; done | \ ++	  sed -e "s|^$$srcdirstrip/||;t" \ ++	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ ++	case $$dist_files in \ ++	  */*) $(MKDIR_P) `echo "$$dist_files" | \ ++			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ ++			   sort -u` ;; \ ++	esac; \ ++	for file in $$dist_files; do \ ++	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ ++	  if test -d $$d/$$file; then \ ++	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ ++	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ ++	      cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ ++	    fi; \ ++	    cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ ++	  else \ ++	    test -f $(distdir)/$$file \ ++	    || cp -p $$d/$$file $(distdir)/$$file \ ++	    || exit 1; \ ++	  fi; \ ++	done ++check-am: all-am ++check: check-am ++all-am: Makefile $(LTLIBRARIES) ++installdirs: ++install: install-am ++install-exec: install-exec-am ++install-data: install-data-am ++uninstall: uninstall-am ++ ++install-am: all-am ++	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am ++ ++installcheck: installcheck-am ++install-strip: ++	$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ ++	  install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ ++	  `test -z '$(STRIP)' || \ ++	    echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install ++mostlyclean-generic: ++ ++clean-generic: ++ ++distclean-generic: ++	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) ++ ++maintainer-clean-generic: ++	@echo "This command is intended for maintainers to use" ++	@echo "it deletes files that may require special tools to rebuild." ++clean: clean-am ++ ++clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ ++	mostlyclean-am ++ ++distclean: distclean-am ++	-rm -rf ./$(DEPDIR) ++	-rm -f Makefile ++distclean-am: clean-am distclean-compile distclean-generic \ ++	distclean-tags ++ ++dvi: dvi-am ++ ++dvi-am: ++ ++html: html-am ++ ++info: info-am ++ ++info-am: ++ ++install-data-am: ++ ++install-dvi: install-dvi-am ++ ++install-exec-am: ++ ++install-html: install-html-am ++ ++install-info: install-info-am ++ ++install-man: ++ ++install-pdf: install-pdf-am ++ ++install-ps: install-ps-am ++ ++installcheck-am: ++ ++maintainer-clean: maintainer-clean-am ++	-rm -rf ./$(DEPDIR) ++	-rm -f Makefile ++maintainer-clean-am: distclean-am maintainer-clean-generic ++ ++mostlyclean: mostlyclean-am ++ ++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ ++	mostlyclean-libtool ++ ++pdf: pdf-am ++ ++pdf-am: ++ ++ps: ps-am ++ ++ps-am: ++ ++uninstall-am: ++ ++.MAKE: install-am install-strip ++ ++.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ ++	clean-libtool clean-noinstLTLIBRARIES ctags distclean \ ++	distclean-compile distclean-generic distclean-libtool \ ++	distclean-tags distdir dvi dvi-am html html-am info info-am \ ++	install install-am install-data install-data-am install-dvi \ ++	install-dvi-am install-exec install-exec-am install-html \ ++	install-html-am install-info install-info-am install-man \ ++	install-pdf install-pdf-am install-ps install-ps-am \ ++	install-strip installcheck installcheck-am installdirs \ ++	maintainer-clean maintainer-clean-generic mostlyclean \ ++	mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ ++	pdf pdf-am ps ps-am tags uninstall uninstall-am ++ ++# Tell versions [3.59,3.63) of GNU make to not export all variables. ++# Otherwise a system limit (for SysV at least) may be exceeded. ++.NOEXPORT: +diff -urpN jamvm-1.5.0/src/os/linux/Makefile.am jamvm-1.5.0-avr32/src/os/linux/Makefile.am +--- jamvm-1.5.0/src/os/linux/Makefile.am	2007-10-28 00:19:26.000000000 +0200 ++++ jamvm-1.5.0-avr32/src/os/linux/Makefile.am	2008-02-08 09:20:38.000000000 +0100 +@@ -20,7 +20,7 @@ + ## +  + SUBDIRS = @arch@ +-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips ++DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips avr32 +  + noinst_LTLIBRARIES = libos.la + libos_la_SOURCES = os.c +diff -urpN jamvm-1.5.0/src/os/linux/Makefile.in jamvm-1.5.0-avr32/src/os/linux/Makefile.in +--- jamvm-1.5.0/src/os/linux/Makefile.in	2007-10-29 07:02:37.000000000 +0100 ++++ jamvm-1.5.0-avr32/src/os/linux/Makefile.in	2008-02-08 09:20:38.000000000 +0100 +@@ -191,7 +191,7 @@ use_zip_no = @use_zip_no@ + use_zip_yes = @use_zip_yes@ + with_classpath_install_dir = @with_classpath_install_dir@ + SUBDIRS = @arch@ +-DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips ++DIST_SUBDIRS = powerpc arm i386 x86_64 parisc mips avr32 + noinst_LTLIBRARIES = libos.la + libos_la_SOURCES = os.c + AM_CPPFLAGS = -I$(top_builddir)/src diff --git a/package/java/jamvm/jamvm.mk b/package/java/jamvm/jamvm.mk new file mode 100644 index 000000000..f2dae14f4 --- /dev/null +++ b/package/java/jamvm/jamvm.mk @@ -0,0 +1,105 @@ +############################################################# +# +# jamvm 1.5.0 +# +############################################################# +JAMVM_VERSION = 1.5.0 +JAMVM_SOURCE = jamvm-$(JAMVM_VERSION).tar.gz +JAMVM_SITE = http://$(BR2_SOURCEFORGE_MIRROR).dl.sourceforge.net/sourceforge/jamvm/ +JAMVM_AUTORECONF = NO +JAMVM_INSTALL_STAGING = YES +JAMVM_INSTALL_TARGET = YES +JAMVM_INSTALL_STAGING_OPT = DESTDIR=$(STAGING_DIR) install +JAMVM_INSTALL_TARGET_OPT = DESTDIR=$(TARGET_DIR) install + +JAMVM_CONF_ENV = ac_cv_func_posix_getpwuid_r=yes glib_cv_stack_grows=no \ +		glib_cv_uscore=no ac_cv_func_strtod=yes \ +		ac_fsusage_space=yes fu_cv_sys_stat_statfs2_bsize=yes \ +		ac_cv_func_closedir_void=no ac_cv_func_getloadavg=no \ +		ac_cv_lib_util_getloadavg=no ac_cv_lib_getloadavg_getloadavg=no \ +		ac_cv_func_getgroups=yes ac_cv_func_getgroups_works=yes \ +		ac_cv_func_chown_works=yes ac_cv_have_decl_euidaccess=no \ +		ac_cv_func_euidaccess=no ac_cv_have_decl_strnlen=yes \ +		ac_cv_func_strnlen_working=yes ac_cv_func_lstat_dereferences_slashed_symlink=yes \ +		ac_cv_func_lstat_empty_string_bug=no ac_cv_func_stat_empty_string_bug=no \ +		vb_cv_func_rename_trailing_slash_bug=no ac_cv_have_decl_nanosleep=yes \ +		jm_cv_func_nanosleep_works=yes gl_cv_func_working_utimes=yes \ +		ac_cv_func_utime_null=yes ac_cv_have_decl_strerror_r=yes \ +		ac_cv_func_strerror_r_char_p=no jm_cv_func_svid_putenv=yes \ +		ac_cv_func_getcwd_null=yes ac_cv_func_getdelim=yes \ +		ac_cv_func_mkstemp=yes utils_cv_func_mkstemp_limitations=no \ +		utils_cv_func_mkdir_trailing_slash_bug=no ac_cv_func_memcmp_working=yes \ +		ac_cv_have_decl_malloc=yes gl_cv_func_malloc_0_nonnull=yes \ +		ac_cv_func_malloc_0_nonnull=yes ac_cv_func_calloc_0_nonnull=yes \ +		ac_cv_func_realloc_0_nonnull=yes jm_cv_func_gettimeofday_clobber=no \ +		gl_cv_func_working_readdir=yes jm_ac_cv_func_link_follows_symlink=no \ +		utils_cv_localtime_cache=no ac_cv_struct_st_mtim_nsec=no \ +		gl_cv_func_tzset_clobber=no gl_cv_func_getcwd_null=yes \ +		gl_cv_func_getcwd_path_max=yes ac_cv_func_fnmatch_gnu=yes \ +		am_getline_needs_run_time_check=no am_cv_func_working_getline=yes \ +		gl_cv_func_mkdir_trailing_slash_bug=no gl_cv_func_mkstemp_limitations=no \ +		ac_cv_func_working_mktime=yes jm_cv_func_working_re_compile_pattern=yes \ +		ac_use_included_regex=no gl_cv_c_restrict=no \ +		ac_cv_path_GLIB_GENMARSHAL=/usr/bin/glib-genmarshal \ +		ac_cv_prog_F77=no ac_cv_prog_CXX=no ac_cv_path_CUPS_CONFIG=no  + +JAMVM_CONF_OPT = --target=$(GNU_TARGET_NAME) --host=$(GNU_TARGET_NAME) \ +		--build=$(GNU_HOST_NAME) --prefix=/usr \ +		--exec-prefix=/usr --bindir=/usr/bin \ +		--sbindir=/usr/sbin --libdir=/usr/lib \ +		--libexecdir=/usr/lib --sysconfdir=/etc \ +		--datadir=/usr/share --localstatedir=/var \ +		--includedir=/usr/include --mandir=/usr/man \ +		--infodir=/usr/info --enable-shared \ +		--enable-static \ +		--disable-glibtest --enable-explicit-deps=no \ +		--disable-debug PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ +		--with-classpath-install-dir=/usr \ + + +JAMVM_DEPENDENCIES = uclibc classpath + +#Include X libraries when we have an X server +ifneq ($(BR2_PACKAGE_XSERVER_none),y) +	JAMVM_DEPENDENCIES+= $(XSERVER) +	JAMVM_CONF_OPT+= --with-x \ +		--x-includes=$(STAGING_DIR)/usr/include/X11 \ +		--x-libraries=$(STAGING_DIR)/usr/lib +else +	JAMVM_CONF_OPT+= --without-x +endif + + +#Enable or disable alsa +ifeq ($(BR2_PACKAGE_ALSA_LIB),y) +	JAMVM_DEPENDENCIES+= alsa-lib +	JAMVM_CONF_OPT+= --with-alsa +else +	JAMVM_CONF_OPT+= --without-alsa +endif + +#Enable or disable gtk +ifeq ($(BR2_PACKAGE_LIBGTK2),y) +	JAMVM_DEPENDENCIES+= libgtk2 +	JAMVM_CONF_OPT+= --enable-gtk-peer +else +	JAMVM_CONF_OPT+= --disable-gtk-peer +endif + +#Enable or disable qt backend +ifeq ($(BR2_PACKAGE_QTOPIA4),y) +	JAMVM_DEPENDENCIES+= qtopia4 +	JAMVM_CONF_OPT+= --enable-qt-peer +else +	JAMVM_CONF_OPT+= --disable-qt-peer +endif + + +# I have no clue but if this is not passed to configure, the assembler crashes +ifeq ($(BR2_avr32),y) +	JAMVM_CONF_OPT+= \ +		CFLAGS="-g0" \ +		CC="$(STAGING_DIR)/usr/bin/avr32-linux-gcc" +endif + +$(eval $(call AUTOTARGETS,package,jamvm)) diff --git a/package/java/java.mk b/package/java/java.mk new file mode 100644 index 000000000..123a0d09b --- /dev/null +++ b/package/java/java.mk @@ -0,0 +1 @@ +include package/java/*/*.mk  | 
