Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/runtime/config/gen-regmask.c
ViewVC logotype

Annotation of /sml/trunk/src/runtime/config/gen-regmask.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 651 - (view) (download) (as text)

1 : monnier 249 /* gen-regmask.c
2 :     *
3 :     * COPYRIGHT (c) 1995 by AT&T Bell Laboratories.
4 :     *
5 :     * This file generates default definitions of some compiler flags and
6 :     * various register masks. The masks define the registers that are
7 :     * live in the following situations:
8 :     *
9 :     * FUN_MASK -- polymorphic (wrapped) function entry.
10 :     *
11 :     * RET_MASK -- return continuation mask
12 :     *
13 :     * CONT_MASK -- wrapped callcc continuation entry.
14 :     *
15 :     * EXN_MASK -- exception handler entry
16 :     *
17 :     * The defined constants are:
18 :     *
19 :     * CALLEESAVE
20 :     * FLOATCALLEESAVE
21 :     */
22 :    
23 :     #include "gen.h"
24 :    
25 :     #ifndef DST_FILE
26 :     #define DST_FILE "reg-mask.h"
27 :     #endif
28 :    
29 :     #ifndef CALLEESAVE
30 :     # define GEN_CALLEESAVE
31 :     # if defined(TARGET_M68)
32 :     # define CALLEESAVE 0
33 :     # else
34 :     # define CALLEESAVE 3
35 :     # endif
36 :     #endif
37 :     #ifndef FLOAT_CALLEESAVE
38 :     # define GEN_FLOAT_CALLEESAVE
39 :     # define FLOAT_CALLEESAVE 0
40 :     #endif
41 :    
42 :     #if (CALLEESAVE > 0)
43 :     # define FUN_MASK ((1 << (CALLEESAVE + 4)) - 1)
44 :     # define RET_MASK ((1 << (CALLEESAVE + 4)) - 0x10 + 0xc)
45 :     # define CONT_MASK FUN_MASK
46 :     # define EXN_MASK FUN_MASK
47 :     #else
48 :     # define FUN_MASK ((1 << (CALLEESAVE + 4)) - 1)
49 :     # define RET_MASK (0xd)
50 :     # define CONT_MASK FUN_MASK
51 :     # define EXN_MASK CONT_MASK
52 :     #endif
53 :    
54 :     main ()
55 :     {
56 :     FILE *f;
57 :    
58 :     f = OpenFile (DST_FILE, "_REG_MASK_");
59 :    
60 :     fprintf (f, "\n");
61 :     #ifdef GEN_CALLEESAVE
62 :     fprintf (f, "#define CALLEESAVE %d\n", CALLEESAVE);
63 :     #endif
64 :     #ifdef GEN_FLOAT_CALLEESAVE
65 :     fprintf (f, "#define FLOAT_CALLEESAVE %d\n", FLOAT_CALLEESAVE);
66 :     #endif
67 :     fprintf (f, "\n");
68 :     fprintf (f, "#define FUN_MASK\t\t%d\t/*\t%#010x\t*/\n",
69 :     FUN_MASK, FUN_MASK);
70 :     fprintf (f, "#define RET_MASK\t\t%d\t/*\t%#010x\t*/\n",
71 :     RET_MASK, RET_MASK);
72 :     fprintf (f, "#define CONT_MASK\t\t%d\t/*\t%#010x\t*/\n",
73 :     CONT_MASK, CONT_MASK);
74 :     fprintf (f, "#define EXN_MASK\t\t%d\t/*\t%#010x\t*/\n",
75 :     EXN_MASK, EXN_MASK);
76 :     fprintf (f, "\n");
77 :     CloseFile (f, "_REG_MASK_");
78 :    
79 :     exit (0);
80 :    
81 :     }

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0