syscall, sysenter, sysexit, sysret
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 4112ab2..6379c8c 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -651,6 +651,8 @@
{ "stc", 0xF9 },
{ "std", 0xFD },
{ "sti", 0xFB },
+ { "sysenter", 0x0F, 0x34 },
+ { "sysexit", 0x0F, 0x35 },
{ "emms", 0x0F, 0x77 },
{ "pause", 0xF3, 0x90 },
@@ -1696,6 +1698,8 @@
{ "movsq", 0x48, 0xA5 },
{ "scasq", 0x48, 0xAF },
{ "stosq", 0x48, 0xAB },
+ { "syscall", 0x0F, 0x05 },
+ { "sysret", 0x0F, 0x07 },
};
putGeneric(tbl, NUM_OF_ARRAY(tbl));
diff --git a/test/make_nm.cpp b/test/make_nm.cpp
index a9f80f9..862cd96 100644
--- a/test/make_nm.cpp
+++ b/test/make_nm.cpp
@@ -462,6 +462,8 @@
"movsq",
"scasq",
"stosq",
+ "syscall",
+ "sysret",
#else
"aaa",
"aad",
@@ -508,6 +510,8 @@
"stc",
"std",
"sti",
+ "sysenter",
+ "sysexit",
"emms",
"pause",
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 721503a..5fff545 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -760,6 +760,8 @@
void subps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x5C, 0x100, isXMM_XMMorMEM); }
void subsd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x5C, 0xF2, isXMM_XMMorMEM); }
void subss(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x5C, 0xF3, isXMM_XMMorMEM); }
+void sysenter() { db(0x0F); db(0x34); }
+void sysexit() { db(0x0F); db(0x35); }
void tzcnt(const Reg®, const Operand& op) { opSp1(reg, op, 0xF3, 0x0F, 0xBC); }
void ucomisd(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x2E, 0x66, isXMM_XMMorMEM); }
void ucomiss(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x2E, 0x100, isXMM_XMMorMEM); }
@@ -1560,6 +1562,8 @@
void movsq() { db(0x48); db(0xA5); }
void scasq() { db(0x48); db(0xAF); }
void stosq() { db(0x48); db(0xAB); }
+void syscall() { db(0x0F); db(0x05); }
+void sysret() { db(0x0F); db(0x07); }
void cmpxchg16b(const Address& addr) { opModM(addr, Reg64(1), 0x0F, 0xC7); }
void movq(const Reg64& reg, const Mmx& mmx) { if (mmx.isXMM()) db(0x66); opModR(mmx, reg, 0x0F, 0x7E); }
void movq(const Mmx& mmx, const Reg64& reg) { if (mmx.isXMM()) db(0x66); opModR(mmx, reg, 0x0F, 0x6E); }