43 case 0x1: printf(
"gt0");
break;
44 case 0x2: printf(
"eq0");
break;
45 case 0x3: printf(
"ge0");
break;
46 case 0x7: printf(
"not_maxneg");
break;
47 case 0x8: printf(
"maxneg");
break;
48 case 0xc: printf(
"lt0");
break;
49 case 0xd: printf(
"ne0");
break;
50 case 0xe: printf(
"le0");
break;
58 case 0x1: printf(
"> 0");
break;
59 case 0x2: printf(
"== 0");
break;
60 case 0x3: printf(
">= 0");
break;
61 case 0x7: printf(
"!= 0x80000000UL");
break;
62 case 0x8: printf(
"== 0x80000000UL");
break;
63 case 0xc: printf(
"< 0");
break;
64 case 0xd: printf(
"!= 0");
break;
65 case 0xe: printf(
"<= 0");
break;
70 void bcnd(
int samepage,
int n_bit,
int m5)
72 if (samepage && n_bit)
81 printf(
"\tif ((%sint32_t)reg(ic->arg[0]) ",
82 (m5 == 7 || m5 == 8)?
"u" :
"");
87 printf(
"\t\tcpu->cd.m88k.next_ic = (struct m88k_" 88 "instr_call *) ic->arg[2];\n");
90 printf(
"\t\tcpu->pc = (cpu->pc & 0xfffff000) + " 91 "(int32_t)ic->arg[2];\n\t\tquick_pc_to_" 97 printf(
"\tint cond = (%sint32_t)reg(ic->arg[0]) ",
98 (m5 == 7 || m5 == 8)?
"u" :
"");
102 printf(
"\tSYNCH_PC;\n");
104 printf(
"\tif (cond)\n");
105 printf(
"\t\tcpu->cd.m88k.delay_target = (cpu->pc\n");
106 printf(
"\t\t\t& ~((M88K_IC_ENTRIES_PER_PAGE-1)" 107 " << M88K_INSTR_ALIGNMENT_SHIFT))\n");
108 printf(
"\t\t\t+ ic->arg[2];\n");
110 printf(
"\t\tcpu->cd.m88k.delay_target = cpu->pc + 8;\n");
112 printf(
"\tcpu->delay_slot = TO_BE_DELAYED;\n");
113 printf(
"\tic[1].f(cpu, ic+1);\n");
114 printf(
"\tcpu->n_translated_instrs ++;\n");
116 printf(
"\tif (!(cpu->delay_slot & EXCEPTION_IN_" 118 printf(
"\t\tcpu->delay_slot = NOT_DELAYED;\n");
119 printf(
"\t\tif (cond) {\n");
121 printf(
"\t\t\tcpu->pc = cpu->cd.m88k.delay_target;\n");
122 printf(
"\t\t\tquick_pc_to_pointers(cpu);\n");
124 printf(
"\t\t} else\n");
125 printf(
"\t\t\tcpu->cd.m88k.next_ic ++;\n");
126 printf(
"\t} else\n");
127 printf(
"\t\tcpu->delay_slot = NOT_DELAYED;\n");
135 int main(
int argc,
char *argv[])
137 int samepage, n_bit, m5;
139 printf(
"\n/* AUTOMATICALLY GENERATED! Do not edit. */\n\n");
141 for (samepage=0; samepage<=1; samepage++)
142 for (n_bit=0; n_bit<=1; n_bit++)
143 for (m5=0; m5<=31; m5++) {
144 if (m5 == 1 || m5 == 2 || m5 == 3 || m5 == 7 || m5 == 8 ||
145 m5 == 0xc || m5 == 0xd || m5 == 0xe)
146 bcnd(samepage, n_bit, m5);
150 printf(
"\n\nvoid (*m88k_bcnd[32 * 2 * 2])(struct cpu *, struct " 151 "m88k_instr_call *) = {\n");
152 for (samepage=0; samepage<=1; samepage++)
153 for (n_bit=0; n_bit<=1; n_bit++)
154 for (m5=0; m5<=31; m5++) {
155 if (m5 || n_bit || samepage)
158 if (m5 == 1 || m5 == 2 || m5 == 3 || m5 == 7 || m5 == 8 ||
159 m5 == 0xc || m5 == 0xd || m5 == 0xe) {
160 if (samepage && n_bit)
163 printf(
"m88k_instr_");
165 samepage, n_bit, m5);
void print_operator(int m5)
int main(int argc, char *argv[])
void print_function_name(int samepage, int n_bit, int m5)
void bcnd(int samepage, int n_bit, int m5)