--- gforth/Attic/m68k.h 1994/12/12 17:10:41 1.1 +++ gforth/Attic/m68k.h 1995/01/18 18:41:41 1.2 @@ -1,5 +1,5 @@ /* - $Id: m68k.h,v 1.1 1994/12/12 17:10:41 anton Exp $ + $Id: m68k.h,v 1.2 1995/01/18 18:41:41 anton Exp $ Copyright 1992 by the ANSI figForth Development Group This is the machine-specific part for the 68000 and family @@ -8,6 +8,12 @@ #include "32bit.h" #ifdef DIRECT_THREADED + +#define CACHE_FLUSH(addr,size) cache_$clear() +/* Clearing the whole cache is a bit drastic, but this is the only + cache control available on the apollo. +*/ + /* PFA gives the parameter field address corresponding to a cfa */ #define PFA(cfa) (((Cell *)cfa)+2) /* PFA1 is a special version for use just after a NEXT1 */ @@ -22,14 +28,16 @@ /* this is the point where the does code starts if label points to the * jump dodoes */ -#define DOES_CODE(label) ((Xt *)(((char *)label)+8)) +#define DOES_CODE(label) ((Xt *)(((char *)CODE_ADDRESS(label))+DOES_HANDLER_SIZE)) /* this is a special version of DOES_CODE for use in dodoes */ #define DOES_CODE1(label) DOES_CODE(label) -/* this stores a jump dodoes at ca */ -#define MAKE_DOESJUMP(ca) ({short * _ca = (short *)ca; \ - _ca[0] = 0x4ef9; /* jmp.l */ \ - *(long *)(_ca+1) = (long)&&dodoes;}) +/* this stores a call dodoes at addr */ +#define MAKE_DOES_HANDLER(addr) MAKE_CF(addr,symbols[DODOES]) + +#define DOES_HANDLER_SIZE 8 + +#define MAKE_DOES_CF(addr,doesp) MAKE_CF(addr,((int)(doesp)-8)) #endif