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&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); }