version 1.7, 1996/10/13 19:56:22
|
version 1.8, 1997/03/04 17:49:51
|
Line 26
|
Line 26
|
*/ |
*/ |
#if defined(apollo) |
#if defined(apollo) |
# define FLUSH_ICACHE(addr,size) cache_$clear() |
# define FLUSH_ICACHE(addr,size) cache_$clear() |
|
#elif defined(NeXT) |
|
# define FLUSH_ICACHE(addr,size) asm("trap #2"); |
|
#elif defined(hpux) |
|
# include <sys/cache.h> |
|
# define FLUSH_ICACHE(addr,size) cachectl(CC_IPURGE,(addr),(size)) |
#else |
#else |
# if defined(NeXT) |
# warning no FLUSH_ICACHE defined. If your machine has an I-cache (68020+), |
# define FLUSH_ICACHE(addr,size) asm("trap #2"); |
# warning direct threading and CODE words will not work. |
# endif |
|
#endif |
#endif |
|
|
#ifdef DIRECT_THREADED |
#ifdef DIRECT_THREADED |
Line 50
|
Line 54
|
starts. */ |
starts. */ |
#define DOES_CODE(cfa) \ |
#define DOES_CODE(cfa) \ |
({ short *_cfa=(short *)(cfa); \ |
({ short *_cfa=(short *)(cfa); \ |
short *_ca; |
short *_ca; \ |
((_cfa[0] == 0x4ef9 \ |
((_cfa[0] == 0x4ef9 \ |
&& (_ca=CODE_ADDRESS(cfa), _ca[0] == 0x4ef9) \ |
&& (_ca=CODE_ADDRESS(cfa), _ca[0] == 0x4ef9) \ |
&& *(long *)(_cfa+1) == &&docol) \ |
&& *(long *)(_cfa+1) == &&docol) \ |
Line 63
|
Line 67
|
/* this stores a call dodoes at addr */ |
/* this stores a call dodoes at addr */ |
#define MAKE_DOES_HANDLER(addr) MAKE_CF(addr,symbols[DODOES]) |
#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)) |
#define MAKE_DOES_CF(addr,doesp) MAKE_CF(addr,((int)(doesp)-8)) |
#endif |
#endif |
|
|