44 #define M88K_LOADSTORE_STORE 4
45 #define M88K_LOADSTORE_SIGNEDNESS 8
46 #define M88K_LOADSTORE_ENDIANNESS 16
47 #define M88K_LOADSTORE_SCALEDNESS 32
48 #define M88K_LOADSTORE_USR 64
49 #define M88K_LOADSTORE_REGISTEROFFSET 128
56 int endianness,
int scaledness,
int usr,
int registeroffset)
65 printf(
"_%i", 1 << size);
67 if (endianness >= 0) {
70 if (size == 0 && endianness)
73 printf(endianness?
"_be" :
"_le");
76 if (scaledness && size > 0)
88 int endianness,
int scaledness,
int usr,
int registeroffset)
90 if (store && signedness)
93 if (size == 0 && endianness)
96 if (size == 0 && scaledness)
99 if (!registeroffset && usr)
102 if (!registeroffset && scaledness)
106 printf(
"#define LS_STORE\n");
108 printf(
"#define LS_LOAD\n");
110 printf(
"#define LS_N m88k_instr_");
112 scaledness, usr, registeroffset);
115 printf(
"#define LS_GENERIC_N m88k_generic_");
117 scaledness, usr, registeroffset);
120 printf(
"#define LS_%i\n", 1 << size);
121 printf(
"#define LS_SIZE %i\n", 1 << size);
123 if (signedness && !store)
124 printf(
"#define LS_SIGNED\n");
127 printf(
"#define LS_BE\n");
129 printf(
"#define LS_LE\n");
132 printf(
"#define LS_INCLUDE_GENERIC\n");
135 printf(
"#define LS_SCALED\n");
138 printf(
"#define LS_USR\n");
141 printf(
"#define LS_REGOFS\n");
143 printf(
"#include \"cpu_m88k_instr_loadstore.cc\"\n");
147 printf(
"#undef LS_REGOFS\n");
150 printf(
"#undef LS_USR\n");
153 printf(
"#undef LS_SCALED\n");
156 printf(
"#undef LS_INCLUDE_GENERIC\n");
159 printf(
"#undef LS_BE\n");
161 printf(
"#undef LS_LE\n");
163 if (signedness && !store)
164 printf(
"#undef LS_SIGNED\n");
166 printf(
"#undef LS_SIZE\n");
167 printf(
"#undef LS_%i\n", 1 << size);
169 printf(
"#undef LS_GENERIC_N\n");
170 printf(
"#undef LS_N\n");
173 printf(
"#undef LS_STORE\n");
175 printf(
"#undef LS_LOAD\n");
179 int main(
int argc,
char *argv[])
181 int size, store, signedness, endianness, scaledness, usr,
184 printf(
"\n/* AUTOMATICALLY GENERATED! Do not edit. */\n\n");
197 for (size=0; size<=3; size++)
199 endianness, scaledness, usr, registeroffset);
202 printf(
"\n\nvoid (*m88k_loadstore[256])(struct cpu *, struct "
203 "m88k_instr_call *) = {\n");
215 for (size=0; size<=3; size++) {
216 if (store || size || signedness || endianness
217 || scaledness || usr || registeroffset)
220 if (store && signedness) {
225 if (!registeroffset && usr) {
230 if (!registeroffset && scaledness) {
235 if (size == 0 && scaledness) {
240 printf(
"\tm88k_instr_");
242 endianness, scaledness, usr, registeroffset);
246 fprintf(stderr,
"%s: generated_functions = %i\n",