ReactOS 0.4.16-dev-122-g325d74c
kxarm.h
Go to the documentation of this file.
1
2#define ENABLE_FRAME_POINTER 1
3
4#undef TRUE
5//#define TRUE 1
6#undef FALSE
7//#define FALSE 0
8
9//#include "kxarmunw.h"
10
11#ifdef _MSC_VER
12
13 /* Globals */
14 GBLS __FuncStartLabel
15 GBLS __FuncEpilog1StartLabel
16 GBLS __FuncEpilog2StartLabel
17 GBLS __FuncEpilog3StartLabel
18 GBLS __FuncEpilog4StartLabel
19 GBLS __FuncXDataLabel
20 GBLS __FuncXDataPrologLabel
21 GBLS __FuncXDataEpilog1Label
22 GBLS __FuncXDataEpilog2Label
23 GBLS __FuncXDataEpilog3Label
24 GBLS __FuncXDataEpilog4Label
25 GBLS __FuncXDataEndLabel
26 GBLS __FuncEndLabel
27 GBLS __FuncArea
28 GBLS __FuncExceptionHandler
29
30 MACRO
31 __DeriveFunctionLabels $FuncName
32__FuncStartLabel SETS "|$FuncName|"
33__FuncEndLabel SETS "|$FuncName._end|"
34__FuncEpilog1StartLabel SETS "|$FuncName._epilog1_start|"
35__FuncEpilog2StartLabel SETS "|$FuncName._epilog2_start|"
36__FuncEpilog3StartLabel SETS "|$FuncName._epilog3_start|"
37__FuncEpilog4StartLabel SETS "|$FuncName._epilog4_start|"
38__FuncXDataLabel SETS "|$FuncName._xdata|"
39__FuncXDataPrologLabel SETS "|$FuncName._xdata_prolog|"
40__FuncXDataEpilog1Label SETS "|$FuncName._xdata_epilog1|"
41__FuncXDataEpilog2Label SETS "|$FuncName._xdata_epilog2|"
42__FuncXDataEpilog3Label SETS "|$FuncName._xdata_epilog3|"
43__FuncXDataEpilog4Label SETS "|$FuncName._xdata_epilog4|"
44__FuncXDataEndLabel SETS "|$FuncName._xdata_end|"
45 MEND
46
47 MACRO
48 __ExportName $FuncName
49 LCLS Name
50Name SETS "|$FuncName|"
51 ALIGN 4
52 EXPORT $Name
53$Name
54 MEND
55
56 MACRO
57 __ExportProc $FuncName
58 LCLS Name
59Name SETS "|$FuncName|"
60 ALIGN 4
61 EXPORT $Name
62$Name PROC
63 MEND
64
65 MACRO
66 TEXTAREA
67#if defined(_CONTROL_FLOW_GUARD)
68 AREA |.text|,ALIGN=4,CODE,READONLY
69#else
70 AREA |.text|,ALIGN=2,CODE,READONLY
71#endif
72 MEND
73
74 MACRO
75 DATAAREA
76 AREA |.data|,DATA
77 MEND
78
79 MACRO
80 RODATAAREA
81 AREA |.rdata|,DATA,READONLY
82 MEND
83
84 MACRO
85 NESTED_ENTRY $FuncName, $AreaName, $ExceptHandler
86 __DeriveFunctionLabels $FuncName
87__FuncArea SETS "|.text|"
88 IF "$AreaName" != ""
89__FuncArea SETS "$AreaName"
90 ENDIF
91__FuncExceptionHandler SETS ""
92 IF "$ExceptHandler" != ""
93__FuncExceptionHandler SETS "|$ExceptHandler|"
94 ENDIF
95 AREA $__FuncArea,CODE,READONLY
96 __ExportProc $FuncName
97 ROUT
98 // __ResetUnwindState
99 MEND
100
101 // FIXME: this does not exist in native
102 MACRO
103 PROLOG_END
104 /* Ignore for now */
105 MEND
106
107 MACRO
108 NESTED_END $FuncName
109$__FuncEndLabel
110 LTORG
111 ENDP
112 //AREA |.pdata|,ALIGN=2,READONLY
113 //DCD $__FuncStartLabel
114 //RELOC 2
115 //DCD $__FuncXDataLabel
116 //RELOC 2
117 //__EmitUnwindXData
118 //AREA $__FuncArea,CODE,READONLY
119__FuncStartLabel SETS ""
120__FuncEndLabel SETS ""
121 MEND
122
123 MACRO
124 LEAF_ENTRY $FuncName, $AreaName
125 NESTED_ENTRY $FuncName, $AreaName
126 MEND
127
128 MACRO
129 LEAF_END $FuncName
130 NESTED_END $FuncName
131 MEND
132
133 MACRO
134 LEAF_ENTRY_NO_PDATA $FuncName, $AreaName
135 __DeriveFunctionLabels $FuncName
136__FuncArea SETS "|.text|"
137 IF "$AreaName" != ""
138__FuncArea SETS "$AreaName"
139 ENDIF
140 AREA $__FuncArea,CODE,READONLY
141 __ExportProc $FuncName
142 ROUT
143 MEND
144
145 MACRO
146 LEAF_END_NO_PDATA $FuncName
147$__FuncEndLabel
148 LTORG
149 ENDP
150__FuncStartLabel SETS ""
151__FuncEndLabel SETS ""
152 MEND
153
154 MACRO
155 ALTERNATE_ENTRY $FuncName
156 __ExportName $FuncName
157 ROUT
158 MEND
159
160
161 #define CR 13
162 #define LF 10
163 #define NUL 0
164
165 #define ASCII dcb
166
167 MACRO
168 UNIMPLEMENTED $Name
169 MEND
170
171#else
172
173/* Compatibility define */
174#define EQU .equ
175
176.macro IMPORT Name
177 /* Ignore */
178.endm
179
180.macro EXPORT Name
181 .global &Name
182.endm
183
184.macro TEXTAREA
185 .section .text, "rx"
186#if defined(_CONTROL_FLOW_GUARD)
187 .align 4
188#else
189 .align 2
190#endif
191.endm
192
193.macro DATAAREA
194 .section .data, "rw"
195.endm
196
197.macro RODATAAREA
198 .section .rdata, "rw"
199.endm
200
201.macro NESTED_ENTRY Name
202FuncName .equ &Name
203PrologName .equ &Name&_Prolog
204FuncEndName .equ &Name&_end
205 .global &FuncName
206 .align 2
207 .func &FuncName
209.endm
210
211// FIXME: should go to kxarmunw.h
212.macro PROLOG_END
213 \PrologName:
214.endm
215
216.macro NESTED_END Name
217 &FuncEndName:
218 .endfunc
219.endm
220
221.macro LEAF_ENTRY $FuncName, $AreaName
222 NESTED_ENTRY $FuncName, $AreaName
223.endm
224
225.macro LEAF_END $FuncName
226 NESTED_END $FuncName
227.endm
228
229
230/* Some "intrinsics", see http://codemachine.com/article_armasm.html */
231
232.macro __debugbreak
233 DCD 0xDEFE
234.endm
235
236.macro __assertfail
237 DCD 0xDEFC
238.endm
239
240.macro __fastfail
241 DCD 0xDEFB
242.endm
243
244.macro __rdpmccntr64
245 DCD 0xDEFA
246.endm
247
248.macro __debugservice
249 DCD 0xDEFD
250.endm
251
252.macro __brkdiv0
253 DCD 0xDEF9
254.endm
255
256
257#endif
258
259
#define PROC(name)
Definition: WinHttpOpen.c:37
__forceinline void __brkdiv0(void)
#define ALIGN(x)
Definition: avimux.c:40
#define UNIMPLEMENTED
Definition: debug.h:118
struct _DATA DATA
void __cdecl __debugbreak(void)
Definition: intrin_ppc.h:698
macro IMPORT Name endm macro EXPORT Name global &Name endm macro TEXTAREA section rx align endm macro DATAAREA section rw endm macro RODATAAREA section rw endm macro NESTED_ENTRY Name FuncName equ &Name PrologName equ &Name &_Prolog FuncEndName equ &Name &_end global &FuncName align func &FuncName & FuncName
Definition: kxarm.h:221
macro IMPORT Name endm macro EXPORT Name global &Name endm macro TEXTAREA section rx align endm macro DATAAREA section rw endm macro RODATAAREA section rw endm macro NESTED_ENTRY Name FuncName equ &Name PrologName equ &Name &_Prolog FuncEndName equ &Name &_end global &FuncName align func &FuncName $AreaName NESTED_ENTRY $FuncName
Definition: kxarm.h:222
#define MACRO(v)
#define IMPORT
Definition: standard.h:69