aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/include/asm/asmmacro.h
diff options
context:
space:
mode:
authorSam Ravnborg <sam@ravnborg.org>2012-05-25 17:20:09 -0400
committerDavid S. Miller <davem@davemloft.net>2012-05-28 02:52:43 -0400
commit5b8b93c4ab17a250a35e6db1cce094bf599a21c6 (patch)
tree9ce54b39fe8193d245a4511f23d02d4b037d0245 /arch/sparc/include/asm/asmmacro.h
parent4efb55e6916628fde549b0ef1c2830593ccf19c4 (diff)
sparc32: add support for run-time patching of leon/sun single instructions
This will be used to handle that MMUREGS has different ASI for SUN and LEON. This is the infrastructure only - users will come later. Signed-off-by: Sam Ravnborg <sam@ravnborg.org> Cc: Daniel Hellstrom <daniel@gaisler.com> Cc: Konrad Eisele <konrad@gaisler.com>
Diffstat (limited to 'arch/sparc/include/asm/asmmacro.h')
-rw-r--r--arch/sparc/include/asm/asmmacro.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/arch/sparc/include/asm/asmmacro.h b/arch/sparc/include/asm/asmmacro.h
index 02a172fb193a..a0e28ef02558 100644
--- a/arch/sparc/include/asm/asmmacro.h
+++ b/arch/sparc/include/asm/asmmacro.h
@@ -20,4 +20,26 @@
20/* All traps low-level code here must end with this macro. */ 20/* All traps low-level code here must end with this macro. */
21#define RESTORE_ALL b ret_trap_entry; clr %l6; 21#define RESTORE_ALL b ret_trap_entry; clr %l6;
22 22
23/* Support for run-time patching of single instructions.
24 * This is used to handle the differences in the ASI for
25 * MMUREGS for LEON and SUN.
26 *
27 * Sample:
28 * LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %o0
29 * SUN_PI_(lda [%g0] ASI_M_MMUREGS, %o0
30 * PI == Patch Instruction
31 *
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__
38
39#define SUN_PI_(...) \
40 .section .leon_1insn_patch, "ax"; \
41 .word 662b; \
42 __VA_ARGS__; \
43 .previous
44
23#endif /* !(_SPARC_ASMMACRO_H) */ 45#endif /* !(_SPARC_ASMMACRO_H) */