| #define FLUSH_ICACHE(addr,size) \ |
#define FLUSH_ICACHE(addr,size) \ |
| ({void *_addr=(addr); void *_end=_addr+((Cell)(size)); \ |
({void *_addr=(addr); void *_end=_addr+((Cell)(size)); \ |
| for (_addr=((long)_addr)&~7; _addr<_end; _addr += 8) \ |
for (_addr=((long)_addr)&~7; _addr<_end; _addr += 8) \ |
| asm("iflush %0"::"r"(_addr)); \ |
asm("iflush %0+0"::"r"(_addr)); \ |
| }) |
}) |
| |
/* the +0 in the iflush instruction is needed by gas */ |
| |
|
| #ifdef DIRECT_THREADED |
#ifdef DIRECT_THREADED |
| #ifndef WORDS_BIGENDIAN |
#ifndef WORDS_BIGENDIAN |