diff --git a/gas/NEWS b/gas/NEWS index 867450369a63594599286180328c3732571b9258..88415076c18de0d9148f19823fe98a66c06dd8a0 100644 --- a/gas/NEWS +++ b/gas/NEWS @@ -21,7 +21,7 @@ * Add support for Armv8-R and Armv8.7-A AArch64. -* Add support for DSB memory nXS barrier and WFET instruction for Armv8.7 +* Add support for DSB memory nXS barrier, WFET and WFIT instruction for Armv8.7 AArch64. * Add support for +csre feature for -march. Add CSR PDEC instruction for CSRE diff --git a/gas/testsuite/gas/aarch64/system-5.d b/gas/testsuite/gas/aarch64/system-5.d index 22fd6115e063f042d764321e1bbb2b519c1b2ff6..935e843a5063eca7e054eef678786358d1790fa8 100644 --- a/gas/testsuite/gas/aarch64/system-5.d +++ b/gas/testsuite/gas/aarch64/system-5.d @@ -1,4 +1,4 @@ -#name: WFET (Wait For Event with Timeout) instruction +#name: WFET and WFIT instructions #objdump: -dr .*: file format .* @@ -37,3 +37,34 @@ Disassembly of section \.text: .*: d503101c wfet x28 .*: d503101d wfet x29 .*: d503101e wfet x30 +.*: d5031020 wfit x0 +.*: d5031021 wfit x1 +.*: d5031022 wfit x2 +.*: d5031023 wfit x3 +.*: d5031024 wfit x4 +.*: d5031025 wfit x5 +.*: d5031026 wfit x6 +.*: d5031027 wfit x7 +.*: d5031028 wfit x8 +.*: d5031029 wfit x9 +.*: d503102a wfit x10 +.*: d503102b wfit x11 +.*: d503102c wfit x12 +.*: d503102d wfit x13 +.*: d503102e wfit x14 +.*: d503102f wfit x15 +.*: d5031030 wfit x16 +.*: d5031031 wfit x17 +.*: d5031032 wfit x18 +.*: d5031033 wfit x19 +.*: d5031034 wfit x20 +.*: d5031035 wfit x21 +.*: d5031036 wfit x22 +.*: d5031037 wfit x23 +.*: d5031038 wfit x24 +.*: d5031039 wfit x25 +.*: d503103a wfit x26 +.*: d503103b wfit x27 +.*: d503103c wfit x28 +.*: d503103d wfit x29 +.*: d503103e wfit x30 diff --git a/gas/testsuite/gas/aarch64/system-5.s b/gas/testsuite/gas/aarch64/system-5.s index 6a518cecdfaad1ca38f30d38adf6cf3849765797..ec2c58c890ff7d64722e7c88b27518b2b0c26321 100644 --- a/gas/testsuite/gas/aarch64/system-5.s +++ b/gas/testsuite/gas/aarch64/system-5.s @@ -32,3 +32,37 @@ wfet x28 wfet x29 wfet x30 + +/* Wait For Interrupt with Timeout. */ + + wfit x0 + wfit x1 + wfit x2 + wfit x3 + wfit x4 + wfit x5 + wfit x6 + wfit x7 + wfit x8 + wfit x9 + wfit x10 + wfit x11 + wfit x12 + wfit x13 + wfit x14 + wfit x15 + wfit x16 + wfit x17 + wfit x18 + wfit x19 + wfit x20 + wfit x21 + wfit x22 + wfit x23 + wfit x24 + wfit x25 + wfit x26 + wfit x27 + wfit x28 + wfit x29 + wfit x30 diff --git a/opcodes/aarch64-tbl.h b/opcodes/aarch64-tbl.h index 518a2e85a86e47c07bcc946386653fac3a1130ea..d7cdec6e598d74e5ab9adaec4efadf10528302e6 100644 --- a/opcodes/aarch64-tbl.h +++ b/opcodes/aarch64-tbl.h @@ -3890,6 +3890,7 @@ struct aarch64_opcode aarch64_opcode_table[] = CORE_INSN ("ic", 0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_IC, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)), CORE_INSN ("tlbi",0xd5080000, 0xfff80000, ic_system, 0, OP2 (SYSREG_TLBI, Rt_SYS), QL_SRC_X, F_ALIAS | F_OPD1_OPT | F_DEFAULT (0x1F)), V8_7_INSN ("wfet", 0xd5031000, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS), + V8_7_INSN ("wfit", 0xd5031020, 0xffffffe0, ic_system, OP1 (Rd), QL_I1X, F_HAS_ALIAS), PREDRES_INSN ("cfp", 0xd50b7380, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS), PREDRES_INSN ("dvp", 0xd50b73a0, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS), PREDRES_INSN ("cpp", 0xd50b73e0, 0xffffffe0, ic_system, OP2 (SYSREG_SR, Rt), QL_SRC_X, F_ALIAS),