41 printf(
"%i", 1 << size);
43 if (endianness >= 0) {
46 if (size == 0 && endianness)
49 printf(endianness?
"_be" :
"_le");
54 void loadstore(
int mode32,
int store,
int size,
int signedness,
int endianness)
56 if (store && signedness)
59 if (size == 0 && endianness)
62 printf(
"#if%sdef MODE32\n", mode32?
"" :
"n");
65 printf(
"#define LS_STORE\n");
67 printf(
"#define LS_LOAD\n");
69 printf(
"#define LS_N mips%s_instr_", mode32?
"32" :
"");
73 printf(
"#define LS_GENERIC_N mips%s_generic_", mode32?
"32" :
"");
77 printf(
"#define LS_%i\n", 1 << size);
78 printf(
"#define LS_SIZE %i\n", 1 << size);
80 if (signedness && !store)
81 printf(
"#define LS_SIGNED\n");
84 printf(
"#define LS_BE\n");
86 printf(
"#define LS_LE\n");
89 printf(
"#define LS_INCLUDE_GENERIC\n");
91 printf(
"#include \"cpu_mips_instr_loadstore.cc\"\n");
94 printf(
"#undef LS_INCLUDE_GENERIC\n");
97 printf(
"#undef LS_BE\n");
99 printf(
"#undef LS_LE\n");
101 if (signedness && !store)
102 printf(
"#undef LS_SIGNED\n");
104 printf(
"#undef LS_SIZE\n");
105 printf(
"#undef LS_%i\n", 1 << size);
107 printf(
"#undef LS_GENERIC_N\n");
108 printf(
"#undef LS_N\n");
111 printf(
"#undef LS_STORE\n");
113 printf(
"#undef LS_LOAD\n");
119 int main(
int argc,
char *argv[])
121 int store, mode32, size, signedness, endianness;
123 printf(
"\n/* AUTOMATICALLY GENERATED! Do not edit. */\n\n");
125 for (mode32=0; mode32<=1; mode32++)
126 for (endianness=0; endianness<=1; endianness++)
127 for (store=0; store<=1; store++)
128 for (size=0; size<=3; size++)
129 for (signedness=0; signedness<=1; signedness++)
130 loadstore(mode32, store, size, signedness,
134 for (mode32=0; mode32<=1; mode32++) {
135 printf(
"#if%sdef MODE32\n", mode32?
"" :
"n");
136 printf(
"\n\nvoid (*mips%s_loadstore[32])(struct cpu *, struct "
137 "mips_instr_call *) = {\n", mode32?
"32" :
"");
138 for (endianness=0; endianness<=1; endianness++)
139 for (store=0; store<=1; store++)
140 for (size=0; size<=3; size++)
141 for (signedness=0; signedness<=1; signedness++) {
142 if (store || size || signedness || endianness)
145 if (store && signedness) {
146 printf(
"\tmips%s_instr_invalid",
151 printf(
"\tmips%s_instr_", mode32?
"32" :
"");
160 for (mode32=0; mode32<=1; mode32++) {
161 printf(
"#if%sdef MODE32\n", mode32?
"" :
"n");
162 printf(
"\n\nvoid (*mips%s_loadstore_generic[16])("
163 "struct cpu *, struct mips_instr_call *) = {\n",
165 for (store=0; store<=1; store++)
166 for (size=0; size<=3; size++)
167 for (signedness=0; signedness<=1; signedness++) {
168 if (store || size || signedness)
171 if (store && signedness) {
172 printf(
"\tmips%s_instr_invalid",
177 printf(
"\tmips%s_generic_", mode32?
"32" :
"");