Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/sparc/include/asm/asmmacro.h
26481 views
1
/* SPDX-License-Identifier: GPL-2.0 */
2
/* asmmacro.h: Assembler macros.
3
*
4
* Copyright (C) 1996 David S. Miller ([email protected])
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) */
47
48