Lines Matching refs:file
7 This file is part of GDB.
41 print_engine_issue_prefix_hook (lf *file)
43 lf_printf (file, "\n");
44 lf_indent_suppress (file);
45 lf_printf (file, "#if defined (ENGINE_ISSUE_PREFIX_HOOK)\n");
46 lf_printf (file, "ENGINE_ISSUE_PREFIX_HOOK();\n");
47 lf_indent_suppress (file);
48 lf_printf (file, "#endif\n");
49 lf_printf (file, "\n");
53 print_engine_issue_postfix_hook (lf *file)
55 lf_printf (file, "\n");
56 lf_indent_suppress (file);
57 lf_printf (file, "#if defined (ENGINE_ISSUE_POSTFIX_HOOK)\n");
58 lf_printf (file, "ENGINE_ISSUE_POSTFIX_HOOK();\n");
59 lf_indent_suppress (file);
60 lf_printf (file, "#endif\n");
61 lf_printf (file, "\n");
66 print_run_body (lf *file, const gen_entry *table)
76 lf_printf (file, "{\n");
77 lf_indent (file, +2);
80 lf_printf (file, "%sinstruction_address cia;\n",
83 lf_printf (file, "int current_cpu = next_cpu_nr;\n");
87 lf_printf (file, "/* flush the icache of a possible break insn */\n");
88 lf_printf (file, "{\n");
89 lf_printf (file, " int cpu_nr;\n");
90 lf_printf (file, " for (cpu_nr = 0; cpu_nr < nr_cpus; cpu_nr++)\n");
91 lf_printf (file, " cpu_flush_icache (STATE_CPU (sd, cpu_nr));\n");
92 lf_printf (file, "}\n");
98 lf_putstr (file, "\
115 lf_putstr (file, "\n");
116 lf_putstr (file, "/* prime the main loop */\n");
117 lf_putstr (file, "SIM_ASSERT (current_cpu == 0);\n");
118 lf_putstr (file, "SIM_ASSERT (nr_cpus == 1);\n");
119 lf_putstr (file, "cia = CPU_PC_GET (CPU);\n");
121 lf_putstr (file, "\n");
122 lf_putstr (file, "while (1)\n");
123 lf_putstr (file, " {\n");
124 lf_indent (file, +4);
126 lf_printf (file, "%sinstruction_address nia;\n",
129 lf_printf (file, "\n");
132 lf_printf (file,
135 print_engine_issue_prefix_hook (file);
136 print_idecode_body (file, table, "nia = ");
137 print_engine_issue_postfix_hook (file);
141 lf_putstr (file, "idecode_cache *cache_entry =\n");
142 lf_putstr (file, " cpu_icache_entry (cpu, cia);\n");
143 lf_putstr (file, "if (cache_entry->address == cia)\n");
144 lf_putstr (file, " {\n");
145 lf_indent (file, -4);
146 lf_putstr (file, "/* cache hit */\n");
147 lf_putstr (file,
149 lf_putstr (file, "cia = semantic (cpu, cache_entry, cia);\n");
151 lf_indent (file, -4);
152 lf_putstr (file, " }\n");
153 lf_putstr (file, "else\n");
154 lf_putstr (file, " {\n");
155 lf_indent (file, +4);
156 lf_putstr (file, "/* cache miss */\n");
159 lf_putstr (file, "idecode_semantic *semantic;\n");
161 lf_printf (file, "instruction_word instruction = IMEM%d (cia);\n",
163 lf_putstr (file, "if (WITH_MON != 0)\n");
164 lf_putstr (file,
168 lf_putstr (file, "{\n");
169 lf_indent (file, +2);
170 print_engine_issue_prefix_hook (file);
171 print_idecode_body (file, table, "nia =");
172 print_engine_issue_postfix_hook (file);
173 lf_indent (file, -2);
174 lf_putstr (file, "}\n");
178 print_engine_issue_prefix_hook (file);
179 print_idecode_body (file, table, "semantic =");
180 lf_putstr (file, "nia = semantic (cpu, cache_entry, cia);\n");
181 print_engine_issue_postfix_hook (file);
183 lf_indent (file, -4);
184 lf_putstr (file, " }\n");
191 lf_printf (file, "\n");
192 lf_printf (file, "/* Update the instruction address */\n");
193 lf_printf (file, "cia = nia;\n");
201 lf_putstr (file, "\n");
202 lf_putstr (file, "/* process any events */\n");
203 lf_putstr (file, "if (sim_events_tick (sd))\n");
204 lf_putstr (file, " {\n");
205 lf_putstr (file, " CPU_PC_SET (CPU, cia);\n");
206 lf_putstr (file, " sim_events_process (sd);\n");
207 lf_putstr (file, " cia = CPU_PC_GET (CPU);\n");
208 lf_putstr (file, " }\n");
210 lf_indent (file, -4);
211 lf_printf (file, " }\n");
217 lf_putstr (file, "\
227 lf_putstr (file, "\n");
228 lf_printf (file,
230 lf_printf (file, "SIM_ASSERT (current_cpu >= 0);\n");
231 lf_printf (file, "SIM_ASSERT (current_cpu <= nr_cpus - 1);\n");
232 lf_printf (file, "SIM_ASSERT (nr_cpus <= MAX_NR_PROCESSORS);\n");
234 lf_putstr (file, "\n");
235 lf_putstr (file, "while (1)\n");
236 lf_putstr (file, " {\n");
237 lf_indent (file, +4);
238 lf_putstr (file, "sim_cpu *cpu = STATE_CPU (sd, current_cpu);\n");
239 lf_putstr (file, "instruction_address cia = CPU_PC_GET (cpu);\n");
240 lf_putstr (file, "\n");
244 lf_printf (file, "instruction_word instruction_0 = IMEM%d (cia);\n",
246 print_engine_issue_prefix_hook (file);
247 print_idecode_body (file, table, "cia =");
248 lf_putstr (file, "CPU_PC_SET (cpu, cia);\n");
249 print_engine_issue_postfix_hook (file);
254 lf_putstr (file, "engine_cache *cache_entry =\n");
255 lf_putstr (file, " cpu_icache_entry(processor, cia);\n");
256 lf_putstr (file, "\n");
257 lf_putstr (file, "if (cache_entry->address == cia) {\n");
259 lf_indent (file, +2);
260 lf_putstr (file, "\n");
261 lf_putstr (file, "/* cache hit */\n");
262 lf_putstr (file,
264 lf_putstr (file,
267 lf_putstr (file, "cpu_set_program_counter(processor, cia);\n");
268 lf_putstr (file, "\n");
269 lf_indent (file, -2);
271 lf_putstr (file, "}\n");
272 lf_putstr (file, "else {\n");
274 lf_indent (file, +2);
275 lf_putstr (file, "\n");
276 lf_putstr (file, "/* cache miss */\n");
279 lf_putstr (file, "engine_semantic *semantic;\n");
281 lf_printf (file, "instruction_word instruction = IMEM%d (cia);\n",
283 lf_putstr (file, "if (WITH_MON != 0)\n");
284 lf_putstr (file,
288 lf_putstr (file, "{\n");
289 lf_indent (file, +2);
290 print_engine_issue_prefix_hook (file);
291 print_idecode_body (file, table, "cia =");
292 print_engine_issue_postfix_hook (file);
293 lf_indent (file, -2);
294 lf_putstr (file, "}\n");
298 print_engine_issue_prefix_hook (file);
299 print_idecode_body (file, table, "semantic = ");
300 lf_putstr (file,
302 print_engine_issue_postfix_hook (file);
305 lf_putstr (file, "cpu_set_program_counter(processor, cia);\n");
306 lf_putstr (file, "\n");
307 lf_indent (file, -2);
309 lf_putstr (file, "}\n");
312 lf_putstr (file, "\n");
313 lf_putstr (file, "current_cpu += 1;\n");
314 lf_putstr (file, "if (current_cpu == nr_cpus)\n");
315 lf_putstr (file, " {\n");
316 lf_putstr (file, " if (sim_events_tick (sd))\n");
317 lf_putstr (file, " {\n");
318 lf_putstr (file, " sim_events_process (sd);\n");
319 lf_putstr (file, " }\n");
320 lf_putstr (file, " current_cpu = 0;\n");
321 lf_putstr (file, " }\n");
324 lf_indent (file, -4);
325 lf_putstr (file, " }\n");
329 lf_indent (file, -2);
330 lf_putstr (file, "}\n");
337 print_engine_run_function_header (lf *file,
342 lf_printf (file, "\n");
346 lf_print__function_type (file, "void", "INLINE_ENGINE", "\n");
349 lf_print__function_type (file, "void", "INLINE_ENGINE", " ");
352 lf_printf (file, "void (*");
355 indent = print_function_name (file, "run", NULL, /* format name */
361 lf_putstr (file, "\n(");
365 indent += lf_printf (file, " (");
368 lf_putstr (file, ")\n(");
372 lf_indent (file, +indent);
373 lf_printf (file, "SIM_DESC sd,\n");
374 lf_printf (file, "int next_cpu_nr,\n");
375 lf_printf (file, "int nr_cpus,\n");
376 lf_printf (file, "int siggnal)");
377 lf_indent (file, -indent);
381 lf_putstr (file, "\n");
385 lf_putstr (file, ";\n");
392 gen_engine_h (lf *file,
400 print_engine_run_function_header (file,
409 gen_engine_c (lf *file,
416 print_includes (file);
417 print_include_inline (file, options.module.semantics);
418 print_include (file, options.module.engine);
419 lf_printf (file, "\n");
420 lf_printf (file, "#include \"sim-assert.h\"\n");
421 lf_printf (file, "\n");
422 print_idecode_globals (file);
423 lf_printf (file, "\n");
430 print_idecode_lookups (file, entry->table, cache_rules);
433 print_engine_run_function_header (file,
437 print_run_body (file, entry->table);