hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/arch/xtensa/include/asm/asmmacro.h
....@@ -11,7 +11,7 @@
1111 #ifndef _XTENSA_ASMMACRO_H
1212 #define _XTENSA_ASMMACRO_H
1313
14
-#include <variant/core.h>
14
+#include <asm/core.h>
1515
1616 /*
1717 * Some little helpers for loops. Use zero-overhead-loops
....@@ -191,4 +191,52 @@
191191 #endif
192192 .endm
193193
194
+#define XTENSA_STACK_ALIGNMENT 16
195
+
196
+#if defined(__XTENSA_WINDOWED_ABI__)
197
+#define XTENSA_FRAME_SIZE_RESERVE 16
198
+#define XTENSA_SPILL_STACK_RESERVE 32
199
+
200
+#define abi_entry(frame_size) \
201
+ entry sp, (XTENSA_FRAME_SIZE_RESERVE + \
202
+ (((frame_size) + XTENSA_STACK_ALIGNMENT - 1) & \
203
+ -XTENSA_STACK_ALIGNMENT))
204
+#define abi_entry_default abi_entry(0)
205
+
206
+#define abi_ret(frame_size) retw
207
+#define abi_ret_default retw
208
+
209
+#elif defined(__XTENSA_CALL0_ABI__)
210
+
211
+#define XTENSA_SPILL_STACK_RESERVE 0
212
+
213
+#define abi_entry(frame_size) __abi_entry (frame_size)
214
+
215
+ .macro __abi_entry frame_size
216
+ .ifgt \frame_size
217
+ addi sp, sp, -(((\frame_size) + XTENSA_STACK_ALIGNMENT - 1) & \
218
+ -XTENSA_STACK_ALIGNMENT)
219
+ .endif
220
+ .endm
221
+
222
+#define abi_entry_default
223
+
224
+#define abi_ret(frame_size) __abi_ret (frame_size)
225
+
226
+ .macro __abi_ret frame_size
227
+ .ifgt \frame_size
228
+ addi sp, sp, (((\frame_size) + XTENSA_STACK_ALIGNMENT - 1) & \
229
+ -XTENSA_STACK_ALIGNMENT)
230
+ .endif
231
+ ret
232
+ .endm
233
+
234
+#define abi_ret_default ret
235
+
236
+#else
237
+#error Unsupported Xtensa ABI
238
+#endif
239
+
240
+#define __XTENSA_HANDLER .section ".exception.text", "ax"
241
+
194242 #endif /* _XTENSA_ASMMACRO_H */