diff options
author | Sam Ravnborg <sam@ravnborg.org> | 2012-05-25 17:20:09 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-28 02:52:43 -0400 |
commit | 5b8b93c4ab17a250a35e6db1cce094bf599a21c6 (patch) | |
tree | 9ce54b39fe8193d245a4511f23d02d4b037d0245 /arch/sparc/include/asm/asmmacro.h | |
parent | 4efb55e6916628fde549b0ef1c2830593ccf19c4 (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.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) */ |