1 /* Sparc fix borrowed from SCM, so here's the copyright:  */
2 /* Scheme implementation intended for JACAL.
3    Copyright (C) 1990, 1991, 1992, 1993, 1994 Aubrey Jaffer. */
4 /* James Clark came up with this neat one instruction fix for
5    continuations on the SPARC.  It flushes the register windows so
6    that all the state of the process is contained in the stack. */
7 #ifdef FLUSH_SPARC_REGISTER_WINDOWS
8 #define FLUSH_REGISTER_WINDOWS asm("ta 3")
9 #else
10 #define FLUSH_REGISTER_WINDOWS /* empty */
11 #endif
12 
13 /* If stack is not longword aligned then */
14 
15 /* #define SHORT_ALIGN */
16 #ifdef THINK_C
17 #define SHORT_ALIGN
18 #endif
19 #ifdef MSDOS
20 #define SHORT_ALIGN
21 #endif
22 #ifdef atarist
23 #define SHORT_ALIGN
24 #endif
25 
26 /* If stacks grow up then */
27 
28  /* STACK_GROWS_UP means that deeper stack values have higher
29      numbered addresses.
30     STACK_GROWS_DOWN means that deeper stack values have lower
31      numbered addresses. This is usually the case (Sparc and
32      Intel platforms, for example, use this). */
33 
34 #if STACK_DIRECTION > 0
35 # define STACK_GROWS_UP
36 #else
37 # define STACK_GROWS_DOWN
38 #endif
39 
40 #ifdef STACK_GROWS_UP
41 # define STK_COMP(a,b) ((a) > (b))
42 # define STK_DIFF(a, b) ((b) - (a))
43 #else
44 # define STK_COMP(a,b) ((a) < (b))
45 # define STK_DIFF(a, b) ((a) - (b))
46 #endif
47 
48 #ifndef STACK_SAFETY_MARGIN
49 # ifdef SIXTY_FOUR_BIT_INTEGERS
50 #  define STACK_SAFETY_MARGIN 100000
51 # else
52 #  define STACK_SAFETY_MARGIN 50000
53 # endif
54 #endif
55