From ecd854fdb47bfaae79b1196c5229efbaf8e673d9 Mon Sep 17 00:00:00 2001 From: bellard Date: Sun, 4 Jan 2004 17:45:05 +0000 Subject: [PATCH] added support for direct patching on i386 host (faster emulation) git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@516 c046a42c-6fe2-441c-8c8c-71466251a162 --- dyngen.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dyngen.c b/dyngen.c index 58d22d9750..390fc3a8a0 100644 --- a/dyngen.c +++ b/dyngen.c @@ -729,6 +729,18 @@ void gen_code(const char *name, host_ulong offset, host_ulong size, if (rel->r_offset >= start_offset && rel->r_offset < start_offset + copy_size) { sym_name = strtab + symtab[ELFW(R_SYM)(rel->r_info)].st_name; + if (strstart(sym_name, "__op_jmp", &p)) { + int n; + n = strtol(p, NULL, 10); + /* __op_jmp relocations are done at + runtime to do translated block + chaining: the offset of the instruction + needs to be stored */ + fprintf(outfile, " jmp_offsets[%d] = %d + (gen_code_ptr - gen_code_buf);\n", + n, rel->r_offset - start_offset); + continue; + } + if (strstart(sym_name, "__op_param", &p)) { snprintf(name, sizeof(name), "param%s", p); } else { -- 2.11.0