summaryrefslogtreecommitdiff
path: root/dyngen.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-29 16:47:34 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2003-03-29 16:47:34 +0000
commit0ea00c9a3c5e69ca30007f982fb7f2163ab8116c (patch)
tree96feb096578daf9b9c8642b7bf1477319f1c2783 /dyngen.c
parente1d4294a4534ef0c14fa83e958f352f5f783e931 (diff)
added number of arguments
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@52 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'dyngen.c')
-rw-r--r--dyngen.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/dyngen.c b/dyngen.c
index ed6861063..5cd59cb9d 100644
--- a/dyngen.c
+++ b/dyngen.c
@@ -282,7 +282,9 @@ void gen_code(const char *name, unsigned long offset, unsigned long size,
error("inconsistent argument numbering in %s", name);
}
- if (gen_switch) {
+ if (gen_switch == 2) {
+ fprintf(outfile, "DEF(%s, %d)\n", name + 3, nb_args);
+ } else if (gen_switch == 1) {
/* output C code */
fprintf(outfile, "case INDEX_%s: {\n", name);
@@ -559,12 +561,13 @@ int load_elf(const char *filename, FILE *outfile, int do_print_enum)
}
if (do_print_enum) {
- fprintf(outfile, "DEF(end)\n");
+ fprintf(outfile, "DEF(end, 0)\n");
for(i = 0, sym = symtab; i < nb_syms; i++, sym++) {
const char *name, *p;
name = strtab + sym->st_name;
if (strstart(name, OP_PREFIX, &p)) {
- fprintf(outfile, "DEF(%s)\n", p);
+ gen_code(name, sym->st_value, sym->st_size, outfile,
+ text, relocs, nb_relocs, reloc_sh_type, symtab, strtab, 2);
}
}
} else {