--- gforth/arch/alpha/machine.h 2000/06/15 09:37:56 1.7 +++ gforth/arch/alpha/machine.h 2002/03/22 20:36:25 1.11 @@ -1,6 +1,6 @@ /* DEC Alpha - Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998,2000 Free Software Foundation, Inc. This file is part of Gforth. @@ -16,7 +16,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA. */ /* Be careful: long long on Alpha are 64 bit :-(( */ @@ -29,12 +29,6 @@ #define USE_TOS #endif -#ifndef INDIRECT_THREADED -#ifndef DIRECT_THREADED -#define DIRECT_THREADED -#endif -#endif - #define FLUSH_ICACHE(addr,size) asm("call_pal 0x86") /* imb (instruction-memory barrier) */ #include "../generic/machine.h" @@ -169,6 +163,19 @@ typedef short Int16; _cfa[1] = (doesp); }) #endif +/* dynamic superinstruction stuff */ + +#define INST_GRANULARITY 4 +#define IND_JUMP_LENGTH 4 +#define IS_NEXT_JUMP(_addr) (((*(unsigned *)(_addr))&0xffe00000) == 0x6be00000) +#define ALIGN_CODE { \ + int align_diff; \ + old_code_here = (Address)(((((Cell)old_code_here)-1)|0xf)+1); \ + align_diff = old_code_here - code_here; \ + memcpy(code_here, ((char *)(int []){0x47ff041f,0x2fe00000,0x47ff041f,0x2fe00000})+16-align_diff,align_diff); \ + code_here = old_code_here; \ + } + #ifdef FORCE_REG /* $9-$14 are callee-saved, $1-$8 and $22-$25 are caller-saved */ #define IPREG asm("$10")