MIPS: Add GINVT instruction helpers
Add a family of ginvt_* functions making it easy to emit a GINVT instruction to globally invalidate TLB entries. We make use of the _ASM_MACRO infrastructure to support emitting the instructions even if the assembler isn't new enough to support them natively. An associated STYPE_GINV definition & sync_ginv() function are added to emit a sync instruction of type 0x14, which operates as a completion barrier for these new GINVT (and GINVI) instructions. Signed-off-by: Paul Burton <paul.burton@mips.com> Cc: linux-mips@vger.kernel.org
This commit is contained in:
@@ -1247,6 +1247,13 @@ __asm__(".macro parse_r var r\n\t"
|
||||
ENC \
|
||||
".endm")
|
||||
|
||||
/* Instructions with 1 register operand & 1 immediate operand */
|
||||
#define _ASM_MACRO_1R1I(OP, R1, I2, ENC) \
|
||||
__asm__(".macro " #OP " " #R1 ", " #I2 "\n\t" \
|
||||
"parse_r __" #R1 ", \\" #R1 "\n\t" \
|
||||
ENC \
|
||||
".endm")
|
||||
|
||||
/* Instructions with 2 register operands */
|
||||
#define _ASM_MACRO_2R(OP, R1, R2, ENC) \
|
||||
__asm__(".macro " #OP " " #R1 ", " #R2 "\n\t" \
|
||||
|
Reference in New Issue
Block a user