diff options
Diffstat (limited to 'arch/sparc/include/asm/asmmacro.h')
-rw-r--r-- | arch/sparc/include/asm/asmmacro.h | 22 |
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(...) \ | ||
37 | 662: __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) */ |