| #define DIRECT_THREADED |
#define DIRECT_THREADED |
| #endif |
#endif |
| |
|
| |
#define FLUSH_ICACHE(addr,size) \ |
| |
({void *_addr=(addr); void *_end=_addr+(size); \ |
| |
for (_addr=((long)_addr)&~7; _addr<_end; _addr += 8) \ |
| |
asm("iflush %0"::"r"(_addr)) \ |
| |
}) |
| |
|
| #ifdef DIRECT_THREADED |
#ifdef DIRECT_THREADED |
| #ifndef WORDS_BIGENDIAN |
#ifndef WORDS_BIGENDIAN |
| #error Direct threading only supported for big-endian SPARCs. |
#error Direct threading only supported for big-endian SPARCs. |
| */ |
*/ |
| #endif |
#endif |
| |
|
| /* assuming size = 8 */ |
|
| #define CACHE_FLUSH(addr,size) \ |
|
| asm("iflush %0; iflush %0+4"::"r"(addr)) |
|
| |
|
| /* 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 */ |