From d9d029006cc40b22c1555bade4d4048749537c21 Mon Sep 17 00:00:00 2001 From: Michael Matz Date: Mon, 11 Jul 2016 19:57:39 +0200 Subject: [PATCH] x86-asm: Add [sl][ig]dtq opcodes GAS has alias lgdtq for lgdt (similar for saves and GDT). It doesn't have the same for LDT. --- tests/asmtest.S | 14 ++++++++++---- x86_64-asm.h | 4 ++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/tests/asmtest.S b/tests/asmtest.S index aed99ed2..c9c9a708 100644 --- a/tests/asmtest.S +++ b/tests/asmtest.S @@ -672,13 +672,19 @@ int $0x10 lgdt 0x1000 lidt 0x1000 lldt 0x1000 - lmsw 0x1000 - lsl 0x1000, %ecx - ltr 0x1000 - sgdt 0x1000 sidt 0x1000 sldt 0x1000 +#ifdef __x86_64__ + lgdtq 0x1000 + lidtq 0x1000 + sgdtq 0x1000 + sidtq 0x1000 +#endif + + lmsw 0x1000 + lsl 0x1000, %ecx + ltr 0x1000 smsw 0x1000 str 0x1000 diff --git a/x86_64-asm.h b/x86_64-asm.h index ef04d024..3820fe12 100644 --- a/x86_64-asm.h +++ b/x86_64-asm.h @@ -358,13 +358,17 @@ ALT(DEF_ASM_OP1(fstsw, 0xdd, 7, OPC_MODRM | OPC_FWAIT, OPT_EA )) DEF_ASM_OP2(arpl, 0x63, 0, OPC_MODRM, OPT_REG16, OPT_REG16 | OPT_EA) DEF_ASM_OP2(lar, 0x0f02, 0, OPC_MODRM, OPT_REG32 | OPT_EA, OPT_REG32) DEF_ASM_OP1(lgdt, 0x0f01, 2, OPC_MODRM, OPT_EA) + DEF_ASM_OP1(lgdtq, 0x0f01, 2, OPC_MODRM, OPT_EA) DEF_ASM_OP1(lidt, 0x0f01, 3, OPC_MODRM, OPT_EA) + DEF_ASM_OP1(lidtq, 0x0f01, 3, OPC_MODRM, OPT_EA) DEF_ASM_OP1(lldt, 0x0f00, 2, OPC_MODRM, OPT_EA | OPT_REG) DEF_ASM_OP1(lmsw, 0x0f01, 6, OPC_MODRM, OPT_EA | OPT_REG) ALT(DEF_ASM_OP2(lslw, 0x0f03, 0, OPC_MODRM | OPC_WLX, OPT_EA | OPT_REG, OPT_REG)) DEF_ASM_OP1(ltr, 0x0f00, 3, OPC_MODRM, OPT_EA | OPT_REG) DEF_ASM_OP1(sgdt, 0x0f01, 0, OPC_MODRM, OPT_EA) + DEF_ASM_OP1(sgdtq, 0x0f01, 0, OPC_MODRM, OPT_EA) DEF_ASM_OP1(sidt, 0x0f01, 1, OPC_MODRM, OPT_EA) + DEF_ASM_OP1(sidtq, 0x0f01, 1, OPC_MODRM, OPT_EA) DEF_ASM_OP1(sldt, 0x0f00, 0, OPC_MODRM, OPT_REG | OPT_EA) DEF_ASM_OP1(smsw, 0x0f01, 4, OPC_MODRM, OPT_REG | OPT_EA) DEF_ASM_OP1(str, 0x0f00, 1, OPC_MODRM, OPT_REG16| OPT_EA)