Moses wrote:
> This entry in the ChangeLog seems to have been added twice.
Sorry, and you are right. The reason why it happens should be I modify
diff file just before I submitted. Of course I should not do such, but
that's what I did... And Godmar may kindly put the diffes by hand.

Anyway, the patch which shall be applied to current repository is
attached.

BTW, m68k/linux/jit test finished with '14 of 79 fail'. Not so bad
for the first try, isn't it?

Kiyo
----------------------------------------------------------------------
diff -cr kaffe-snap-0326/ChangeLog kaffe-temp/ChangeLog
*** kaffe-snap-0326/ChangeLog   Fri Mar 26 07:43:55 1999
--- kaffe-temp/ChangeLog        Fri Mar 26 09:34:52 1999
***************
*** 39,69 ****
        * configure.in: enhance help message re --with-engine option
        * configure: regen
  
! Wed Mar 25 16:40:00 1999  Kiyo Inaba <[EMAIL PROTECTED]>
  
        * config/m68k/common.h: sysdepCallMethod for linux.
        Jit support for linux comes back.
        * config/m68k/linux/config.frag: eliminate the use of -O
        flag to evading jit bug.
  
! Wed Mar 25 16:40:00 1999  Kiyo Inaba <[EMAIL PROTECTED]>
! 
!       * config/m68k/linux/md.h: define SP_OFFSET.
!       * config/alpha/jit.h, config/m68k/jit.h, config/m68k/openbsd2/jit.h
!       remove obsolete macros as THREAD_CTX, RETURN_INT, etc.
!       * config/m68k/netbsd1/jit-md.h: Jit support is now
!       integrated with linux port.
!       * config/m68k/linux/jit-md.h: new file. Jit support for
!       linux (which has not yet been finished).
!       * config/m68k/netbsd1/config.frag: eliminate the use of -O2
!       flag to evading jit bug.
!       * config/m68k/linux/config.frag: cross compiling suport.
!       * config/m68k/trampolines.c: change assembler syntax compatible
!       with linux's as. The 'm68k_do_fixup_trampoline' function is
!       now used with shared_vmlibrary, but I've not yet tested if
!       it works or not.
! 
! Wed Mar 25 16:40:00 1999  Kiyo Inaba <[EMAIL PROTECTED]>
  
        * config/m68k/linux/md.h: define SP_OFFSET.
        * config/alpha/jit.h, config/m68k/jit.h, config/m68k/openbsd2/jit.h
--- 39,52 ----
        * configure.in: enhance help message re --with-engine option
        * configure: regen
  
! Wed Mar 25 22:30:00 JST 1999  Kiyo Inaba <[EMAIL PROTECTED]>
  
        * config/m68k/common.h: sysdepCallMethod for linux.
        Jit support for linux comes back.
        * config/m68k/linux/config.frag: eliminate the use of -O
        flag to evading jit bug.
  
! Wed Mar 25 16:40:00 JST 1999  Kiyo Inaba <[EMAIL PROTECTED]>
  
        * config/m68k/linux/md.h: define SP_OFFSET.
        * config/alpha/jit.h, config/m68k/jit.h, config/m68k/openbsd2/jit.h
diff -cr kaffe-snap-0326/config/m68k/linux/jit-md.h 
kaffe-temp/config/m68k/linux/jit-md.h
*** kaffe-snap-0326/config/m68k/linux/jit-md.h  Fri Mar 26 09:38:58 1999
--- kaffe-temp/config/m68k/linux/jit-md.h       Fri Mar 26 09:32:56 1999
***************
*** 0 ****
--- 1,45 ----
+ /*
+  * m68k/netbsd1/jit-md.h
+  * NetBSD m68k JIT configuration information.
+  *
+  * Copyright (c) 1996, 1997
+  *      Transvirtual Technologies, Inc.  All rights reserved.
+  *
+  * See the file "license.terms" for information on usage and redistribution
+  * of this file.
+  *
+  * Written by Marcello Balduccini <[EMAIL PROTECTED]>, 1997.
+  * NOTE: this file is heavily based on m68k/a-ux/jit-md.h and
+  * m68k/openbsd2/jit-md.h, written by Richard Henderson <[EMAIL PROTECTED]>, 1997.
+  */
+ 
+ #ifndef __m68k_netbsd_jit_md_h
+ #define __m68k_netbsd_jit_md_h
+ 
+ /**/
+ /* Include common information. */
+ /**/
+ #include "m68k/jit.h"
+ 
+ /**/
+ /* Define where addresses are returned.  */
+ /**/
+ 
+ #define M68K_RETURN_REF               REG_d0  /* d0 */
+ 
+ /**/
+ /* Extra exception handling information. */
+ /**/
+ #include <signal.h>
+ 
+ #define       EXCEPTIONPROTO                                                  \
+       int sig, int code, struct sigcontext *ctx
+ 
+ /* Get the first exception frame from a signal handler */
+ #define       EXCEPTIONFRAME(f, c)                                            \
+       do {                                                            \
+               (f).retfp = (uintp)__builtin_frame_address(1);          \
+               (f).retpc = (uintp)(c)->sc_pc;                          \
+       } while (0)
+ 
+ #endif
diff -cr kaffe-snap-0326/config/m68k/netbsd1/jit.h kaffe-temp/config/m68k/netbsd1/jit.h
*** kaffe-snap-0326/config/m68k/netbsd1/jit.h   Thu Mar 25 02:52:54 1999
--- kaffe-temp/config/m68k/netbsd1/jit.h        Fri Mar 26 09:33:08 1999
***************
*** 1,202 ****
- /*
-  * m68k/netbsd1/jit.h
-  * NetBSD M68000 JIT configuration information.
-  *
-  * Copyright (c) 1996, 1997, 1998
-  *      Transvirtual Technologies, Inc.  All rights reserved.
-  *
-  * See the file "license.terms" for information on usage and redistribution
-  * of this file.
-  *
-  * Written by Marcello Balduccini <[EMAIL PROTECTED]>, 1997
-  * NOTE: this file is heavily based on m68k/jit.h,
-  * written by Richard Henderson <[EMAIL PROTECTED]>, 1997.
-  *
-  * Modified by Kiyo Inaba <[EMAIL PROTECTED]>,
-  * to use trampoline code.
-  */
- 
- #ifndef __m68k_jit_h
- #define __m68k_jit_h
- 
- /**/
- /* Exception handling information. */
- /**/
- 
- /* Structure of exception frame on stack */
- typedef struct _exceptionFrame {
-         uintp retfp;
-         uintp retpc;
- } exceptionFrame;
- 
- /* Is this frame valid (ie. is it on the current stack) ? */
- #define       FRAMEOKAY(f)                                                    \
-       ((f) && (f)->retfp >= (uintp)TCTX(currentThread)->stackBase &&  \
-        (f)->retfp < (uintp)TCTX(currentThread)->stackEnd)
- 
- /* Get the next frame in the chain */
- #define       NEXTFRAME(f)                                                    \
-       (((exceptionFrame*)(f))->retfp)
- 
- /* Extract the PC from the given frame */
- #define       PCFRAME(f)              ((f)->retpc)
- 
- /* Get the first exception frame from a subroutine call */
- #define       FIRSTFRAME(f, o)                                                \
-       ((f) = *(exceptionFrame*)__builtin_frame_address(0))
- 
- /* Extract the object argument from given frame */
- #define FRAMEOBJECT(f)                (*(Hjava_lang_Object**)((f)->retfp + 8))
- 
- /* Call the relevant exception handler (rewinding the stack as
-    necessary). */
- #define CALL_KAFFE_EXCEPTION(frame, info, obj)                                \
-       __asm__ __volatile__(                                           \
-               "move%.l %1,%/d0\n\t"                                   \
-               "move%.l %0,%/a6\n\t"                                   \
-               "jmp %2@"                                               \
-               : : "g"(frame->retfp), "g"(obj), "a"(info.handler)      \
-               : "d0", "cc", "memory")
- 
- /**/
- /* Method dispatch.  */
- /**/
- 
- #define HAVE_TRAMPOLINE
- 
- typedef struct _methodTrampoline {
-         unsigned short call;
-       int fixup;
-       struct _methods* meth;
- } methodTrampoline;
- 
- extern void m68k_do_fixup_trampoline(void);
- 
- #define FILL_IN_TRAMPOLINE(t,m)                                         \
-         do {                                                            \
-                 (t)->call = 0x4eb9;   /* jsr abs.l */                 \
-                 (t)->fixup = (int)m68k_do_fixup_trampoline;           \
-                 (t)->meth = (m);                                        \
-         } while (0)
- 
- #define FIXUP_TRAMPOLINE_DECL   Method** _pmeth
- #define FIXUP_TRAMPOLINE_INIT   (meth = *_pmeth)
- 
- /**/
- /* Register management information. */
- /**/
- 
- /* Define the register set */
- 
- /* Until we have some method of determining in the prologue which
-    Rnosaveoncall registers are used by a method, it is not a win to
-    have any at all.  */
- 
- #define       REGISTER_SET                                                    \
-       { /* d0 */      0, 0, Rint,             0, 0, 0  },             \
-       { /* d1 */      0, 0, Rint,             0, 0, 1  },             \
-       { /* d2 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 2  }, \
-       { /* d3 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 3  }, \
-       { /* d4 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 4  }, \
-       { /* d5 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 5  }, \
-       { /* d6 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 6  }, \
-       { /* d7 */      0, 0, Rint,             /*Rnosaveoncall*/0, 0, 7  }, \
-       { /* a0 */      0, 0, Rref,             0, 0, 8  },             \
-       { /* a1 */      0, 0, Rref,             0, 0, 9  },             \
-       { /* a2 */      0, 0, Rref,             /*Rnosaveoncall*/0, 0, 10 }, \
-       { /* a3 */      0, 0, Rref,             /*Rnosaveoncall*/0, 0, 11 }, \
-       { /* a4 */      0, 0, Rref,             /*Rnosaveoncall*/0, 0, 12 }, \
-       { /* a5 */      0, 0, Rref,             /*Rnosaveoncall*/0, 0, 13 }, \
-       { /* fp */      0, 0, Reserved,         0, 0, 14 },             \
-       { /* sp */      0, 0, Reserved,         0, 0, 15 },             \
-       { /* fp0 */     0, 0, Rfloat|Rdouble,   0, 0, 16 },             \
-       { /* fp1 */     0, 0, Rfloat|Rdouble,   0, 0, 17 },             \
-       { /* fp2 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 18 }, \
-       { /* fp3 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 19 }, \
-       { /* fp4 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 20 }, \
-       { /* fp5 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 21 }, \
-       { /* fp6 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 22 }, \
-       { /* fp7 */     0, 0, Rfloat|Rdouble,   /*Rnosaveoncall*/0, 0, 23 }, 
- 
- /* Number of registers in the register set */
- #define       NR_REGISTERS    24
- 
- #if 0
- /* Define which registers are used for which return values as seen
-  * by the the callee */
- #define       RETURN_INT              0       /* d0 */
- #define       RETURN_REF              M68K_RETURN_REF
- #define       RETURN_LONG_LOW         1       /* d1 */
- #define       RETURN_LONG_HIGH        0       /* d0 */
- #define       RETURN_FLOAT            32      /* f0 */
- #define       RETURN_DOUBLE_LOW       32      /* f0 */
- #define       RETURN_DOUBLE_HIGH      32      /* Not used in this configuration */
- #endif
- 
- /**/
- /* Opcode generation. */
- /**/
- 
- #define LABEL_FRAMESIZE(L,P) \
-       { \
-               int framesize = SLOTSIZE * (maxLocal + maxStack + \
-                       maxTemp - maxArgs); \
-                       *(P) = framesize; \
-       }
- 
- #define EXTRA_LABELS(P,D,L)
- 
- /* Define if generated code uses two operands rather than one */
- #define       TWO_OPERAND
- 
- /**/
- /* Slot management information. */
- /**/
- 
- /* Size of each slot */
- #define       SLOTSIZE                4
- 
- /*
-  * A stack frame looks like:
-  *
-  *      |                             |
-  *    |  Arguments                    |
-  *      |-------------------------------|
-  *    |  Return address               |
-  *      |-------------------------------|
-  *      |  Saved fp                   |
-  * fp-> |-------------------------------|
-  *      |  Temporaries                        |
-  * sp-> |-------------------------------|
-  */
- 
- /* Generate slot offset for an argument (relative to fp) */
- #define SLOT2ARGOFFSET(_n)    (8 + SLOTSIZE * (_n))
- 
- /* Generate slot offset for a local (non-argument) (relative to fp) */
- #define SLOT2LOCALOFFSET(_n)  (-SLOTSIZE * (maxTemp+maxLocal+maxStack - (_n)))
- 
- /* Wrap up a native call for the JIT */
- #define       KAFFEJIT_TO_NATIVE(_m)
- 
- /* On the 68040 (and 060 I presume) we need to flush the instruction
-    cache before running new code.  Stupidly, Motorola made cpush a
-    privledged instruction, so we have to get operating system help
-    for this.  Naturally, there is no standard there.  */
- 
- #define FLUSH_DCACHE(beg, end) __clear_cache((beg), (end))
- #if 0
- #define FLUSH_DCACHE(beg, end)                                  \
-         __asm__ __volatile__(                                   \
-                 "movem%.l %/d0-%/d7/%/a0-%/a5,%-\n\t"           \
-                 "move%.l %0,%/a1\n\t"                           \
-                 "move%.l %1,%/d1\n\t"                           \
-                 "sub%.l %/d1,%/a1\n\t"                          \
-                 "movel  %#0x80000004,d0\n\t"                    \
-                 "trap   %#12\n\t"                               \
-                 "movem%.l %+,%/d0-%/d7/%/a0-%/a5"               \
-                 :                                               \
-                 : "g" (beg), "g" (end) )
- #endif
- 
- #endif
--- 0 ----

Reply via email to