ReactOS 0.4.17-dev-1296-gb7b13d1
kxarm64.h
Go to the documentation of this file.
1/*
2 * PROJECT: ReactOS SDK
3 * LICENSE: MIT (https://spdx.org/licenses/MIT)
4 * PURPOSE: ReactOS ARM64 architecture asm macros for armasm64 and GAS
5 * COPYRIGHT: Copyright 2026 Justin Miller <justin.miller@reactos.org>
6 */
7
8#ifndef __KXARM64_H__
9#define __KXARM64_H__
10
11/* No ARM64EC support, plain ARM64 names */
12#define A64NAME(Name) Name
13
14#ifdef _MSC_VER
15
16 /* armasm64 labels start in the first column and take no colon */
17 #define LABEL(Name) Name
18
21
22 MACRO
23 TEXTAREA
24 AREA |.text|,ALIGN=2,CODE,READONLY
25 MEND
26
27 MACRO
28 DATAAREA
29 AREA |.data|,DATA
30 MEND
31
32 MACRO
33 RODATAAREA
34 AREA |.rdata|,DATA,READONLY
35 MEND
36
37 MACRO
38 SET_COMDAT_ALIGNMENT $Alignment
39__ComdatAlignment SETA $Alignment
40 MEND
41
42 MACRO
43 NESTED_ENTRY $FuncName
44 LCLS Name
45Name SETS "|$FuncName|"
46 ALIGN 4
47 EXPORT $Name
48$Name PROC
49 MEND
50
51 MACRO
52 NESTED_END $FuncName
53 LTORG
54 ENDP
55 MEND
56
57 MACRO
58 LEAF_ENTRY $FuncName
59 NESTED_ENTRY $FuncName
60 MEND
61
62 MACRO
63 LEAF_END $FuncName
64 NESTED_END $FuncName
65 MEND
66
67 /* Each function gets its own section, aligned by SET_COMDAT_ALIGNMENT */
68 MACRO
69 LEAF_ENTRY_COMDAT $FuncName
70 LCLS Area
71Area SETS "|.text$$mn$$$FuncName|"
72 AREA $Area,ALIGN=$__ComdatAlignment,CODE,READONLY
73 NESTED_ENTRY $FuncName
74 MEND
75
76 MACRO
77 ALTERNATE_ENTRY $FuncName
78 LCLS Name
79Name SETS "|$FuncName|"
80 EXPORT $Name
81$Name
82 MEND
83
84 MACRO
85 ARM64EC_ENTRY_THUNK $A64Name, $Results, $Params
86 MEND
87
88#else
89
90 #define LABEL(Name) Name:
91 #define EQU =
92
93.macro TEXTAREA
94 .section .text, "xr"
95 .p2align 2
96.endm
97
98.macro DATAAREA
99 .section .data, "dw"
100.endm
101
102.macro RODATAAREA
103 .section .rdata, "dr"
104.endm
105
106/* The armasm [FUNC] attribute has no GAS counterpart */
107.macro EXPORT Name, Attribute
108 .global \Name
109.endm
110
111/* Only weak aliases need anything, plain imports resolve at link time */
113 .ifc \Kind,WEAK
114 .weak \Name
115 .set \Name, \Target
116 .endif
117.endm
118
120
121.macro SET_COMDAT_ALIGNMENT Alignment
123.endm
124
125.macro NESTED_ENTRY Name
126 .global \Name
127 .p2align 2
128\Name:
129.endm
130
131.macro NESTED_END Name
132 .ltorg
133.endm
134
135.macro LEAF_ENTRY Name
136 NESTED_ENTRY \Name
137.endm
138
139.macro LEAF_END Name
140 NESTED_END \Name
141.endm
142
143.macro LEAF_ENTRY_COMDAT Name
144 .section .text$mn$\Name, "xr"
145 .p2align __ComdatAlignment
146 NESTED_ENTRY \Name
147.endm
148
149.macro ALTERNATE_ENTRY Name
150 .global \Name
151\Name:
152.endm
153
154.macro ARM64EC_ENTRY_THUNK A64Name, Results, Params
155.endm
156
157/* armasm ALIGN takes a byte count, code sections pad with nop */
158.macro ALIGN Alignment, Offset, Pad, PadSize
159 .balign \Alignment
160.endm
161
162.macro dcb Values:vararg
163 .byte \Values
164.endm
165
166.macro dcw Values:vararg
167 .short \Values
168.endm
169
170.macro dcd Values:vararg
171 .long \Values
172.endm
173
174.macro dcq Values:vararg
175 .quad \Values
176.endm
177
178.macro END
179.endm
180
181#endif
182
183#endif /* __KXARM64_H__ */
#define ALIGN(x)
Definition: avimux.c:28
struct _DATA DATA
#define END()
Definition: resources.c:586
#define PROC(i, p)
Definition: kbd106n.c:330
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set macro SET_COMDAT_ALIGNMENT Alignment set Alignment endm macro NESTED_ENTRY Name global Name p2align xr p2align __ComdatAlignment NESTED_ENTRY Name endm macro ALTERNATE_ENTRY Name global Name Results
Definition: kxarm64.h:154
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Name
Definition: kxarm64.h:107
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set __ComdatAlignment
Definition: kxarm64.h:119
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Kind
Definition: kxarm64.h:112
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set macro SET_COMDAT_ALIGNMENT Alignment set Alignment endm macro NESTED_ENTRY Name global Name p2align xr p2align __ComdatAlignment NESTED_ENTRY Name endm macro ALTERNATE_ENTRY Name global Name Params endm macro ALIGN Pad
Definition: kxarm64.h:158
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set macro SET_COMDAT_ALIGNMENT Alignment set Alignment endm macro NESTED_ENTRY Name global Name p2align xr p2align __ComdatAlignment NESTED_ENTRY Name endm macro ALTERNATE_ENTRY Name global Name Params endm macro ALIGN Alignment
Definition: kxarm64.h:158
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set macro SET_COMDAT_ALIGNMENT Alignment set Alignment endm macro NESTED_ENTRY Name global Name p2align xr p2align __ComdatAlignment NESTED_ENTRY Name endm macro ALTERNATE_ENTRY Name global Name Params endm macro ALIGN Offset
Definition: kxarm64.h:158
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
_In_ WDFIOTARGET Target
Definition: wdfrequest.h:306
_In_ WDFIOTARGET _In_ PWDF_REQUEST_COMPLETION_PARAMS Params
Definition: wdfrequest.h:308