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>
This commit is contained in:

committed by
David S. Miller

parent
4efb55e691
commit
5b8b93c4ab
@@ -20,4 +20,26 @@
|
||||
/* All traps low-level code here must end with this macro. */
|
||||
#define RESTORE_ALL b ret_trap_entry; clr %l6;
|
||||
|
||||
/* Support for run-time patching of single instructions.
|
||||
* This is used to handle the differences in the ASI for
|
||||
* MMUREGS for LEON and SUN.
|
||||
*
|
||||
* Sample:
|
||||
* LEON_PI(lda [%g0] ASI_LEON_MMUREGS, %o0
|
||||
* SUN_PI_(lda [%g0] ASI_M_MMUREGS, %o0
|
||||
* PI == Patch Instruction
|
||||
*
|
||||
* For LEON we will use the first variant,
|
||||
* and for all other we will use the SUN variant.
|
||||
* The order is important.
|
||||
*/
|
||||
#define LEON_PI(...) \
|
||||
662: __VA_ARGS__
|
||||
|
||||
#define SUN_PI_(...) \
|
||||
.section .leon_1insn_patch, "ax"; \
|
||||
.word 662b; \
|
||||
__VA_ARGS__; \
|
||||
.previous
|
||||
|
||||
#endif /* !(_SPARC_ASMMACRO_H) */
|
||||
|
@@ -7,4 +7,7 @@
|
||||
/* sparc entry point */
|
||||
extern char _start[];
|
||||
|
||||
extern char __leon_1insn_patch[];
|
||||
extern char __leon_1insn_patch_end[];
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user