kaffe-0.10.1 for m68k-sunos4
Kiyo Inaba
inaba at src.ricoh.co.jp
Wed Jul 1 21:13:33 PDT 1998
I made kaffe-0.10.1 (or actually kaffe-snap) to work on m68k-sunos4 with
the following patch. It passes several regression tests but still I had
error for
ttest, burford, DeadThread, ExecTest, tthrd1, Bean,
ReflectInvoke, GCTest
I've checked I installed klasses.zip and it was placed before classes.zip
in CLASSPATH environment. Does someone know how I can make these test
to be passed?
Kiyo
-------------------------------------------------------------------------
diff -cr kaffe-snap/config/m68k/sunos4/md.h kaffe-snap-sun3/config/m68k/sunos4/md.h
*** kaffe-snap/config/m68k/sunos4/md.h Wed Apr 1 04:10:53 1998
--- kaffe-snap-sun3/config/m68k/sunos4/md.h Thu Jul 2 11:04:57 1998
***************
*** 14,21 ****
--- 14,83 ----
#include "m68k/threads.h"
+ #define sysdepCallMethod(CALL) \
+ asm volatile (" \n\
+ 1: \n\
+ cmpl #0,%0 \n\
+ beq 3f \n\
+ subql #1,%0 \n\
+ cmpb #0,%2@(%0:l) \n\
+ beq 1b \n\
+ cmpb #1,%2@(%0:l) \n\
+ beq 2f \n\
+ movel %1@(4,%0:l:8),sp at - \n\
+ 2: \n\
+ movel %1@(%0:l:8),sp at - \n\
+ jmp 1b \n\
+ 3: \n\
+ jsr %3@ \n\
+ cmpb #0x46,%4 \n\
+ bne 4f \n\
+ movel d0,%5@ \n\
+ jmp 6f \n\
+ 4: \n\
+ cmpb #0x44,%4 \n\
+ bne 5f \n\
+ movel d0,%5@ \n\
+ movel d1,%5@(4) \n\
+ jmp 6f \n\
+ 5: \n\
+ movel d0,%5@ \n\
+ cmpb #0x4a,%4 \n\
+ bne 6f \n\
+ movel d1,%5@(4) \n\
+ 6: \
+ " : \
+ : "r" ((CALL)->nrargs), \
+ "a" ((CALL)->args), \
+ "a" ((CALL)->callsize), \
+ "a" ((CALL)->function), \
+ "m" ((CALL)->rettype), \
+ "a" ((CALL)->ret) \
+ : "d0", "d1", "fp0", "cc", "memory"); \
+ asm volatile (" \n\
+ addw %0,sp \n\
+ " : : "r" ((CALL)->argsize * sizeof(jint)) : "cc")
+
+ /*
+ * Redefine stack pointer offset.
+ */
+ #undef SP_OFFSET
+ #define SP_OFFSET 2
+
#if defined(TRANSLATOR)
#include "jit-md.h"
#endif
+
+ struct sockaddr;
+ extern int rename(const char*, const char*);
+ extern int remove(const char*);
+ extern int socket(int, int, int);
+ extern ssize_t sendto(int, const void*, size_t, int, const struct sockaddr*, int);
+ extern int setsockopt(int, int, int, const void*, int);
+ extern int getsockopt(int, int, int, void*, int*);
+ extern int getsockname(int, struct sockaddr*, int*);
+ extern int getpeername(int, struct sockaddr*, int*);
+ extern int select(int, fd_set*, fd_set*, fd_set*, struct timeval*);
+ extern int vfprintf(FILE *, char *, va_list);
#endif
More information about the kaffe
mailing list