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/include/asm-base.h
ViewVC logotype

Annotation of /sml/trunk/src/runtime/include/asm-base.h

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : monnier 249 /* asm-base.h
2 :     *
3 :     * COPYRIGHT (c) 1992 AT&T Bell Laboratories
4 :     *
5 :     * Common definitions for assembly files in the SML/NJ system.
6 :     */
7 :    
8 :     #ifndef _ASM_BASE_
9 :     #define _ASM_BASE_
10 :    
11 :     #ifndef _ML_BASE_
12 :     #include "ml-base.h"
13 :     #endif
14 :    
15 :     /* bool_t values for assembly code */
16 :     #define FALSE 0
17 :     #define TRUE 1
18 :    
19 :     #if (!defined(GLOBALS_HAVE_UNDERSCORE)) && (defined(OPSYS_SUNOS) || defined(OPSYS_FREEBSD) || defined(OPSYS_NETBSD) || defined(OPSYS_NEXTSTEP) || defined(OPSYS_WIN32))
20 :     # define GLOBALS_HAVE_UNDERSCORE
21 :     #endif
22 :    
23 :     /* we should probably consider factoring this out into ml-unixdep.h -- JHR */
24 :     #ifdef GLOBALS_HAVE_UNDERSCORE
25 :     # define CSYM(ID) CONCAT(_,ID)
26 :     #else
27 :     # define CSYM(ID) ID
28 :     #endif
29 :    
30 :     #if defined(HOST_SPARC)
31 :     # if defined(OPSYS_SUNOS)
32 :     # include <machine/asm_linkage.h>
33 :     # include <machine/trap.h>
34 :     # undef ENTRY
35 :     # elif defined(OPSYS_SOLARIS)
36 :     # define _ASM
37 :     # include <sys/stack.h>
38 :     # include <sys/trap.h>
39 :     # endif
40 :     # define GLOBAL(ID) .global CSYM(ID)
41 :     # define LABEL(ID) ID:
42 :     # define ALIGN4 .align 4
43 :     # define WORD(W) .word W
44 :     # if defined(OPSYS_NEXTSTEP)
45 :     # define TEXT .text
46 :     # define DATA .data
47 :     # else
48 :     # define TEXT .seg "text"
49 :     # define DATA .seg "data"
50 :     # endif
51 :     # define BEGIN_PROC(P)
52 :     # define END_PROC(P)
53 :    
54 :     #elif defined(HOST_MIPS)
55 :     # if defined(OPSYS_MACH)
56 :     # include <mips/regdef.h>
57 :     # elif defined(OPSYS_IRIX5)
58 :     # define _MIPS_SIM 1 /* IRIX 5.x needs this in <regdef.h> */
59 :     # include <regdef.h>
60 :     # else
61 :     # include <regdef.h>
62 :     # endif
63 :     # define GLOBAL(ID) .globl CSYM(ID)
64 :     # define LABEL(ID) ID:
65 :     # define ALIGN4 .align 2
66 :     # define WORD(W) .word W
67 :     # define TEXT .text
68 :     # define DATA .data
69 :     # define BEGIN_PROC(P) .ent CSYM(P)
70 :     # define END_PROC(P) .end CSYM(P)
71 :    
72 :     #elif defined(HOST_ALPHA32)
73 :     # include <regdef.h>
74 :     # define GLOBAL(ID) .globl CSYM(ID)
75 :     # define LABEL(ID) ID:
76 :     # define ALIGN4 .align 2
77 :     # define WORD(W) .word W
78 :     # define TEXT .text
79 :     # define DATA .data
80 :     # define BEGIN_PROC(P) .align 3; .ent CSYM(P)
81 :     # define END_PROC(P) .end CSYM(P)
82 :    
83 :     #elif defined(HOST_HPPA)
84 :     # define GLOBAL(ID) .export ID,DATA
85 :     # define LABEL(ID) .label ID
86 :     # define ALIGN4 .align 8
87 :     # define BEGIN_PROC(P)
88 :     # define END_PROC(P)
89 :     # define __SC__ !
90 :    
91 :     #elif (defined(HOST_RS6000) || defined(HOST_PPC))
92 :     # if defined(OPSYS_AIX)
93 :     # define CFUNSYM(ID) CONCAT(.,ID)
94 :     # define USE_TOC
95 :     # define GLOBAL(ID) .globl CSYM(ID)
96 :     # define TEXT .csect [PR]
97 :     # define DATA .csect [RW]
98 :     # define RO_DATA .csect [RO]
99 :     # define ALIGN4 .align 2
100 :     # define ALIGN8 .align 3
101 :     # define DOUBLE(V) .double V
102 :     # define LABEL(ID) ID:
103 :     # elif defined(OPSYS_MKLINUX)
104 :     # define CFUNSYM(ID) ID
105 :     # define GLOBAL(ID) .globl CSYM(ID)
106 :     # define TEXT .section ".text"
107 :     # define DATA .section ".data"
108 :     # define RO_DATA .section ".rodata"
109 :     # define ALIGN4 .align 2
110 :     # define ALIGN8 .align 3
111 :     # define DOUBLE(V) .double V
112 :     # define LABEL(ID) ID:
113 :     # endif
114 :    
115 :     # define CENTRY(ID) \
116 :     .globl CFUNSYM(ID); \
117 :     LABEL(CFUNSYM(ID))
118 :    
119 :     #elif defined(HOST_X86)
120 :     # if defined(OPSYS_WIN32)
121 :     # include "x86-masm.h"
122 :     # define WORD(W) WORD32(W)
123 :     # else
124 :     # define GLOBAL(ID) .globl CSYM(ID)
125 :     # define LABEL(ID) CONCAT(ID,:)
126 :     # define IMMED(ID) CONCAT($,ID)
127 :     # define ALIGN4 .align 2
128 :     # define WORD(W) .word W
129 :     # define TEXT .text
130 :     # define DATA .data
131 :     # define BEGIN_PROC(P) .ent P
132 :     # define END_PROC(P) .end P
133 :     # endif
134 :    
135 :     #else
136 :    
137 :     # error missing asm definitions
138 :    
139 :     #endif
140 :    
141 :     #ifndef __SC__
142 :     # define __SC__ ;
143 :     #endif
144 :    
145 :     #define ENTRY(ID) \
146 :     GLOBAL(ID) __SC__ \
147 :     LABEL(CSYM(ID))
148 :    
149 :     #define ML_CODE_HDR(name) \
150 :     GLOBAL(name) __SC__ \
151 :     ALIGN4 __SC__ \
152 :     LABEL(CSYM(name))
153 :    
154 :     #endif /* !_ASM_BASE_ */
155 :    

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