Skip to content

Commit a9e2cef

Browse files
author
Victor Do Nascimento
committed
aarch64: Implement TLBIP 128-bit instruction
The addition of 128-bit page table descriptors and, with it, the addition of 128-bit system registers for these means that special "invalidate translation table entry" instructions are needed to cope with the new 128-bit model. This is introduced with the `tlbpi' instruction, implemented here.
1 parent 92d8946 commit a9e2cef

File tree

3 files changed

+5
-0
lines changed

3 files changed

+5
-0
lines changed

gas/config/tc-aarch64.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7666,6 +7666,7 @@ parse_operands (char *str, const aarch64_opcode *opcode)
76667666
goto sys_reg_ins;
76677667

76687668
case AARCH64_OPND_SYSREG_TLBI:
7669+
case AARCH64_OPND_SYSREG_TLBIP:
76697670
inst.base.operands[i].sysins_op =
76707671
parse_sys_ins_reg (&str, aarch64_sys_regs_tlbi_hsh);
76717672
sys_reg_ins:

include/opcode/aarch64.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -566,6 +566,7 @@ enum aarch64_opnd
566566
AARCH64_OPND_SYSREG_DC, /* System register <dc_op> operand. */
567567
AARCH64_OPND_SYSREG_IC, /* System register <ic_op> operand. */
568568
AARCH64_OPND_SYSREG_TLBI, /* System register <tlbi_op> operand. */
569+
AARCH64_OPND_SYSREG_TLBIP, /* System register <tlbip_op> operand. */
569570
AARCH64_OPND_SYSREG_SR, /* System register RCTX operand. */
570571
AARCH64_OPND_BARRIER, /* Barrier operand. */
571572
AARCH64_OPND_BARRIER_DSB_NXS, /* Barrier operand for DSB nXS variant. */

opcodes/aarch64-tbl.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4218,6 +4218,7 @@ const struct aarch64_opcode aarch64_opcode_table[] =
42184218
CORE_INSN ("dc", 0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_DC, Rt), QL_SRC_X, F_ALIAS),
42194219
CORE_INSN ("ic", 0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_IC, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
42204220
CORE_INSN ("tlbi",0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_TLBI, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)),
4221+
D128_INSN ("tlbip",0xd5480000, 0xfff80000, OP3 (SYSREG_TLBIP, Rt_SYS, PAIRREG_OR_XZR), QL_SRC_X2, F_ALIAS| F_OPD1_OPT | F_OPD_PAIR_OPT | F_DEFAULT (0x1f)),
42214222
V8_7A_INSN ("wfet", 0xd5031000, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
42224223
V8_7A_INSN ("wfit", 0xd5031020, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS),
42234224
PREDRES_INSN ("cfp", 0xd50b7380, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS),
@@ -6351,6 +6352,8 @@ const struct aarch64_opcode aarch64_opcode_table[] =
63516352
"an instruction cache maintenance operation specifier") \
63526353
Y(SYSTEM, sysins_op, "SYSREG_TLBI", 0, F(), \
63536354
"a TBL invalidation operation specifier") \
6355+
Y(SYSTEM, sysins_op, "SYSREG_TLBIP", 0, F(), \
6356+
"a 128-bit TBL invalidation operation specifier") \
63546357
Y(SYSTEM, sysins_op, "SYSREG_SR", 0, F(), \
63556358
"a Speculation Restriction option name (RCTX)") \
63566359
Y(SYSTEM, barrier, "BARRIER", 0, F(), \

0 commit comments

Comments
 (0)