root/arch/sparc/include/asm/asmmacro.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 /* asmmacro.h: Assembler macros.
   3  *
   4  * Copyright (C) 1996 David S. Miller (davem@caipfs.rutgers.edu)
   5  */
   6 
   7 #ifndef _SPARC_ASMMACRO_H
   8 #define _SPARC_ASMMACRO_H
   9 
  10 /* All trap entry points _must_ begin with this macro or else you
  11  * lose.  It makes sure the kernel has a proper window so that
  12  * c-code can be called.
  13  */
  14 #define SAVE_ALL_HEAD \
  15         sethi   %hi(trap_setup), %l4; \
  16         jmpl    %l4 + %lo(trap_setup), %l6;
  17 #define SAVE_ALL \
  18         SAVE_ALL_HEAD \
  19          nop;
  20 
  21 /* All traps low-level code here must end with this macro. */
  22 #define RESTORE_ALL b ret_trap_entry; clr %l6;
  23 
  24 /* Support for run-time patching of single instructions.
  25  * This is used to handle the differences in the ASI for
  26  * MMUREGS for LEON and SUN.
  27  *
  28  * Sample:
  29  * LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %o0
  30  * SUN_PI_(lda [%g0] ASI_M_MMUREGS, %o0
  31  * PI == Patch Instruction
  32  *
  33  * For LEON we will use the first variant,
  34  * and for all other we will use the SUN variant.
  35  * The order is important.
  36  */
  37 #define LEON_PI(...)                            \
  38 662:    __VA_ARGS__
  39 
  40 #define SUN_PI_(...)                            \
  41         .section .leon_1insn_patch, "ax";       \
  42         .word 662b;                             \
  43         __VA_ARGS__;                            \
  44         .previous
  45 
  46 #endif /* !(_SPARC_ASMMACRO_H) */

/* [<][>][^][v][top][bottom][index][help] */