From d1fe2b245910d42715e556458afe7d975d9417ef Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 25 May 2003 16:47:16 +0000 Subject: [PATCH] self modifying code also tests translation block chaining invalidation git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@184 c046a42c-6fe2-441c-8c8c-71466251a162 --- tests/test-i386.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tests/test-i386.c b/tests/test-i386.c index 50c2d5b2cb..4629105c77 100644 --- a/tests/test-i386.c +++ b/tests/test-i386.c @@ -1218,15 +1218,18 @@ uint8_t code[] = { 0xc3, /* ret */ }; +typedef int FuncType(void); + void test_self_modifying_code(void) { - int (*func)(void); + int i; - func = (void *)code; printf("self modifying code:\n"); - printf("func1 = 0x%x\n", func()); - code[1] = 0x2; - printf("func1 = 0x%x\n", func()); + printf("func1 = 0x%x\n", ((FuncType *)code)()); + for(i = 2; i <= 4; i++) { + code[1] = i; + printf("func%d = 0x%x\n", i, ((FuncType *)code)()); + } } static void *call_end __init_call = NULL;