--- gforth/arch/alpha/machine.h 1997/05/21 20:39:59 1.1 +++ gforth/arch/alpha/machine.h 2000/04/29 13:07:34 1.6 @@ -1,6 +1,6 @@ -/* preliminary machine file for DEC Alpha +/* DEC Alpha - Copyright (C) 1995 Free Software Foundation, Inc. + Copyright (C) 1995,1996,1997,1998 Free Software Foundation, Inc. This file is part of Gforth. @@ -20,7 +20,10 @@ */ /* Be careful: long long on Alpha are 64 bit :-(( */ -#define LONG_LATENCY + +#ifndef THREADING_SCHEME +#define THREADING_SCHEME 5 +#endif #if !defined(USE_TOS) && !defined(USE_NO_TOS) #define USE_TOS @@ -34,7 +37,7 @@ #define FLUSH_ICACHE(addr,size) asm("call_pal 0x86") /* imb (instruction-memory barrier) */ -#include "../../engine/32bit.h" +#include "../generic/machine.h" #ifdef DIRECT_THREADED #ifdef WORDS_BIGENDIAN @@ -149,7 +152,7 @@ typedef short Int16; /* the does handler resides between DOES> and the following Forth code. Since the code-field jumps directly to dodoes, the does-handler is not needed for the Alpha architecture */ -#define MAKE_DOES_HANDLER(addr) 0 +#define MAKE_DOES_HANDLER(addr) ((void)0) /* This makes a code field for a does-defined word. doesp is the address of the does-code. On the Alpha, the code field consists of @@ -159,3 +162,13 @@ typedef short Int16; _cfa[1] = (doesp); }) #endif +#ifdef FORCE_REG +/* $9-$14 are callee-saved, $1-$8 and $22-$25 are caller-saved */ +#define IPREG asm("$10") +#define SPREG asm("$11") +#define RPREG asm("$12") +#define LPREG asm("$13") +#define TOSREG asm("$14") +/* #define CFAREG asm("$22") egcs-1.0.3 crashes with any caller-saved + register decl */ +#endif /* FORCE_REG */