version 1.1, 1994/12/12 17:10:41
|
version 1.2, 1995/01/18 18:41:41
|
Line 8
|
Line 8
|
#include "32bit.h" |
#include "32bit.h" |
|
|
#ifdef DIRECT_THREADED |
#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 */ |
/* PFA gives the parameter field address corresponding to a cfa */ |
#define PFA(cfa) (((Cell *)cfa)+2) |
#define PFA(cfa) (((Cell *)cfa)+2) |
/* PFA1 is a special version for use just after a NEXT1 */ |
/* PFA1 is a special version for use just after a NEXT1 */ |
Line 22
|
Line 28
|
|
|
/* this is the point where the does code starts if label points to the |
/* this is the point where the does code starts if label points to the |
* jump dodoes */ |
* 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 */ |
/* this is a special version of DOES_CODE for use in dodoes */ |
#define DOES_CODE1(label) DOES_CODE(label) |
#define DOES_CODE1(label) DOES_CODE(label) |
|
|
/* this stores a jump dodoes at ca */ |
/* this stores a call dodoes at addr */ |
#define MAKE_DOESJUMP(ca) ({short * _ca = (short *)ca; \ |
#define MAKE_DOES_HANDLER(addr) MAKE_CF(addr,symbols[DODOES]) |
_ca[0] = 0x4ef9; /* jmp.l */ \ |
|
*(long *)(_ca+1) = (long)&&dodoes;}) |
#define DOES_HANDLER_SIZE 8 |
|
|
|
#define MAKE_DOES_CF(addr,doesp) MAKE_CF(addr,((int)(doesp)-8)) |
#endif |
#endif |
|
|