--- trunk/src/cpus/generate_arm_loadstore.c 2007/10/08 16:19:05 17 +++ trunk/src/cpus/generate_arm_loadstore.c 2007/10/08 16:19:11 18 @@ -25,7 +25,7 @@ * SUCH DAMAGE. * * - * $Id: generate_arm_loadstore.c,v 1.1 2005/08/29 14:36:41 debug Exp $ + * $Id: generate_arm_loadstore.c,v 1.4 2005/10/22 12:22:14 debug Exp $ */ #include @@ -41,16 +41,15 @@ printf("\n/* AUTOMATICALLY GENERATED! Do not edit. */\n\n"); printf("#include \n#include \n" "#include \"cpu.h\"\n" + "#include \"machine.h\"\n" "#include \"memory.h\"\n" "#include \"misc.h\"\n" + "#include \"arm_quick_pc_to_pointers.h\"\n" "#define reg(x) (*((uint32_t *)(x)))\n"); printf("extern void arm_instr_nop(struct cpu *, " "struct arm_instr_call *);\n"); printf("extern void arm_instr_invalid(struct cpu *, " "struct arm_instr_call *);\n"); - printf("extern uint32_t R(struct cpu *, struct arm_instr_call *," - " uint32_t, int);\n"); - printf("extern void arm_pc_to_pointers(struct cpu *);\n"); for (reg=0; reg<=1; reg++) for (p=0; p<=1; p++) @@ -180,8 +179,9 @@ for (l=0; l<=1; l++) { if (s==0 && h==0) continue; - if (s==1 && l==0) + if (l==0 && s==1 && h==0) continue; + /* l=0, s=1, h=1 means STRD */ printf("#define A__NAME__general arm_instr_%s_" "%s_%s_%s_%s_%s_%s__general\n", @@ -257,7 +257,7 @@ printf("\tarm_instr_nop"); else if (s==0 && h==0) printf("\tarm_instr_invalid"); - else if (s==1 && l==0) + else if (l==0 && s==1 && h==0) printf("\tarm_instr_invalid"); else printf("\tarm_instr_%s_%s_%s_%s_%s_%s_%s%s%s", @@ -292,7 +292,7 @@ printf("\tarm_instr_nop"); else if (s==0 && h==0) printf("\tarm_instr_invalid"); - else if (s==1 && l==0) + else if (l==0 && s==1 && h==0) printf("\tarm_instr_invalid"); else printf("\tarm_instr_%s_%s_%s_%s_%s_%s_"