.. | .. |
---|
11 | 11 | #ifndef _XTENSA_ASMMACRO_H |
---|
12 | 12 | #define _XTENSA_ASMMACRO_H |
---|
13 | 13 | |
---|
14 | | -#include <variant/core.h> |
---|
| 14 | +#include <asm/core.h> |
---|
15 | 15 | |
---|
16 | 16 | /* |
---|
17 | 17 | * Some little helpers for loops. Use zero-overhead-loops |
---|
.. | .. |
---|
191 | 191 | #endif |
---|
192 | 192 | .endm |
---|
193 | 193 | |
---|
| 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 | + |
---|
194 | 242 | #endif /* _XTENSA_ASMMACRO_H */ |
---|