diff --git a/config/config-x86-common.mak b/config/config-x86-common.mak
index 0b0da85..0ddf5ad 100644
--- a/config/config-x86-common.mak
+++ b/config/config-x86-common.mak
@@ -105,6 +105,8 @@ $(TEST_DIR)/vmx.elf: $(cstart.o) $(TEST_DIR)/vmx.o $(TEST_DIR)/vmx_tests.o
 
 $(TEST_DIR)/debug.elf: $(cstart.o) $(TEST_DIR)/debug.o
 
+$(TEST_DIR)/selfmodify.elf: $(cstart.o) $(TEST_DIR)/selfmodify.o
+
 arch_clean:
 	$(RM) $(TEST_DIR)/*.o $(TEST_DIR)/*.flat $(TEST_DIR)/*.elf \
 	$(TEST_DIR)/.*.d lib/x86/.*.d
diff --git a/config/config-x86_64.mak b/config/config-x86_64.mak
index 06b2581..edb22ca 100644
--- a/config/config-x86_64.mak
+++ b/config/config-x86_64.mak
@@ -9,5 +9,6 @@ tests = $(TEST_DIR)/access.flat $(TEST_DIR)/apic.flat \
 	  $(TEST_DIR)/pcid.flat $(TEST_DIR)/debug.flat
 tests += $(TEST_DIR)/svm.flat
 tests += $(TEST_DIR)/vmx.flat
+tests += $(TEST_DIR)/selfmodify.flat
 
 include config/config-x86-common.mak
diff --git a/x86/run b/x86/run
index 646c577..a35678f 100755
--- a/x86/run
+++ b/x86/run
@@ -33,7 +33,7 @@ else
 	pc_testdev="-device testdev,chardev=testlog -chardev file,id=testlog,path=msr.out"
 fi
 
-command="${qemu} -enable-kvm $pc_testdev -display none -serial stdio $pci_testdev -kernel"
+command="${qemu} $pc_testdev -display none -serial stdio $pci_testdev -kernel"
 echo ${command} "$@"
 ${command} "$@"
 ret=$?
diff --git a/x86/selfmodify.S b/x86/selfmodify.S
new file mode 100644
index 0000000..8d985cc
--- /dev/null
+++ b/x86/selfmodify.S
@@ -0,0 +1,20 @@
+geteip:
+	mov (%rsp), %rax
+	ret
+
+.global main
+.type main, @function
+
+main:
+	movq $0x947B967B00000000, %rbx
+	call geteip
+	xorq %rbx, (%rax)
+	nop
+	jmp fail
+	jmp fail
+	xor %rax, %rax
+	retq
+
+fail:
+	movq $2, %rax
+	retq 
diff --git a/x86/unittests.cfg b/x86/unittests.cfg
index 6d3e23a..646130b 100644
--- a/x86/unittests.cfg
+++ b/x86/unittests.cfg
@@ -6,6 +6,10 @@
 # arch = i386/x86_64 # Only if the test case works only on one of them
 # groups = group1 group2 # Used to identify test cases with run_tests -g ...
 
+[selfmodify]
+file = selfmodify.flat
+arch = x86_64
+
 [apic]
 file = apic.flat
 smp = 2
