/* SPDX-License-Identifier: GPL-2.0 */1/* asmmacro.h: Assembler macros.2*3* Copyright (C) 1996 David S. Miller ([email protected])4*/56#ifndef _SPARC_ASMMACRO_H7#define _SPARC_ASMMACRO_H89/* All trap entry points _must_ begin with this macro or else you10* lose. It makes sure the kernel has a proper window so that11* c-code can be called.12*/13#define SAVE_ALL_HEAD \14sethi %hi(trap_setup), %l4; \15jmpl %l4 + %lo(trap_setup), %l6;16#define SAVE_ALL \17SAVE_ALL_HEAD \18nop;1920/* All traps low-level code here must end with this macro. */21#define RESTORE_ALL b ret_trap_entry; clr %l6;2223/* Support for run-time patching of single instructions.24* This is used to handle the differences in the ASI for25* MMUREGS for LEON and SUN.26*27* Sample:28* LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %o029* SUN_PI_(lda [%g0] ASI_M_MMUREGS, %o030* PI == Patch Instruction31*32* For LEON we will use the first variant,33* and for all other we will use the SUN variant.34* The order is important.35*/36#define LEON_PI(...) \37662: __VA_ARGS__3839#define SUN_PI_(...) \40.section .leon_1insn_patch, "ax"; \41.word 662b; \42__VA_ARGS__; \43.previous4445#endif /* !(_SPARC_ASMMACRO_H) */464748