/[gxemul]/trunk/src/include/machine.h
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /trunk/src/include/machine.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations)
Mon Oct 8 16:22:11 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 13644 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1539 2007/05/01 04:03:51 debug Exp $
20070415	Landisk PCLOCK should be 33.33 MHz, not 50 MHz. (This makes
		the clock run at correct speed.)
		FINALLY found and fixed the bug which caused OpenBSD/landisk
		to randomly bug out: an &-sign was missing in the special case
		handling of FPSCR in the 'LDS.L @Rm+,FPSCR' instruction.
		Adding similar special case handling for 'LDC.L @Rm+,SR'
		(calling sh_update_sr() instead of just loading).
		Implementing the 'FCNVSD FPUL,DRn' and 'FCNVDS DRm,FPUL'
		SuperH instructions.
		The 'LDC Rm,SR' instruction now immediately breaks out of the
		dyntrans loop if an interrupt is to be triggered.
20070416	In memory_rw.c, if mapping a page as writable, make sure to
		invalidate code translations even if the data access was a
		read.
		Minor SuperH updates.
20070418	Removing the dummy M68K emulation mode.
		Minor SH update (turning unnecessary sts_mach_rn, sts_macl_rn,
		and sts_pr_rn instruction handlers into mov_rm_rn).
20070419	Beginning to add a skeleton for an M88K mode: Adding a hack to
		allow OpenBSD/m88k a.out binaries to be loaded, and disassembly
		of a few simple 88K instructions.
		Commenting out the 'LDC Rm,SR' fix from a few days ago, because
		it made Linux/dreamcast bug out.
		Adding a hack to dev_sh4.c (an extra translation cache
		invalidation), which allows OpenBSD/landisk to boot ok after
		an install. Upgrading the Landisk machine mode to stable,
		updating documentation, etc.
20070420	Experimenting with adding a PCI controller (pcic) to dev_sh4.
		Adding a dummy Realtek 8139C+ skeleton device (dev_rtl8139c).
		Implementing the first M88K instructions (br, or[.u] imm), and
		adding disassembly of some more instructions.
20070421	Continuing a little on dev_rtl8139c.
20070422	Implementing the 9346 EEPROM "read" command for dev_rtl8139c.
		Finally found and fixed an old bug in the log n symbol search
		(it sometimes missed symbols). Debug trace (-i, -t etc) should
		now show more symbols. :-)
20070423	Continuing a little on M88K disassembly.
20070428	Fixing a memset arg order bug in src/net/net.c (thanks to
		Nigel Horne for noticing the bug).
		Applying parts of a patch from Carl van Schaik to clear out
		bottom bits of MIPS addresses more correctly, when using large
		page sizes, and doing some other minor cleanup/refactoring.
		Fixing a couple of warnings given by gcc with the -W option (a
		few more warnings than just plain -Wall).
		Reducing SuperH dyntrans physical address space from 64-bit to
		32-bit (since SH5/SH64 isn't imlemented yet anyway).
		Adding address-to-symbol annotation to a few more instructions
		in the SuperH instruction trace output.
		Beginning regression testing for the next release.
		Reverting the value of SCIF_DELAYED_TX_VALUE from 1 to 2,
		because OpenBSD/landisk may otherwise hang randomly.
20070429	The ugly hack/workaround to get OpenBSD/landisk booting without
		crashing does NOT work anymore (with the April 21 snapshot
		of OpenBSD/landisk). Strangely enough, removing the hack
		completely causes OpenBSD/landisk to work (!).
		More regression testing (re-testing everything SuperH-related,
		and some other things).
		Cobalt interrupts were actually broken; fixing by commenting
		out the DEC21143s in the Cobalt machine.
20070430	More regression testing.
20070501	Updating the OpenBSD/landisk install instructions to use
		4.1 instead of the current snapshot.
		GAAAH! OpenBSD/landisk 4.1 _needs_ the ugly hack/workaround;
		reintroducing it again. (The 4.1 kernel is actually from
		2007-03-11.)
		Simplifying the NetBSD/evbarm install instructions a bit.
		More regression testing.

==============  RELEASE 0.4.5.1  ==============


1 dpavlin 4 #ifndef MACHINE_H
2     #define MACHINE_H
3    
4     /*
5 dpavlin 34 * Copyright (C) 2005-2007 Anders Gavare. All rights reserved.
6 dpavlin 4 *
7     * Redistribution and use in source and binary forms, with or without
8     * modification, are permitted provided that the following conditions are met:
9     *
10     * 1. Redistributions of source code must retain the above copyright
11     * notice, this list of conditions and the following disclaimer.
12     * 2. Redistributions in binary form must reproduce the above copyright
13     * notice, this list of conditions and the following disclaimer in the
14     * documentation and/or other materials provided with the distribution.
15     * 3. The name of the author may not be used to endorse or promote products
16     * derived from this software without specific prior written permission.
17     *
18     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21     * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
22     * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24     * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28     * SUCH DAMAGE.
29     *
30     *
31 dpavlin 40 * $Id: machine.h,v 1.162 2007/04/19 15:18:16 debug Exp $
32 dpavlin 4 */
33    
34     #include <sys/types.h>
35     #include <sys/time.h>
36    
37     #include "symbol.h"
38    
39 dpavlin 14 #include "machine_arc.h"
40 dpavlin 24 #include "machine_pmax.h"
41 dpavlin 4
42 dpavlin 14
43 dpavlin 4 #define MAX_BREAKPOINTS 8
44    
45 dpavlin 24 #define MAX_TICK_FUNCTIONS 16
46 dpavlin 4
47 dpavlin 28 #define MAX_STATISTICS_FIELDS 8
48    
49 dpavlin 4 struct cpu_family;
50     struct diskimage;
51     struct emul;
52     struct fb_window;
53     struct memory;
54 dpavlin 22 struct of_data;
55 dpavlin 32 struct settings;
56 dpavlin 4
57 dpavlin 32
58 dpavlin 34 /* TODO: This should probably go away... */
59 dpavlin 12 struct isa_pic_data {
60 dpavlin 20 struct pic8259_data *pic1;
61     struct pic8259_data *pic2;
62 dpavlin 30
63 dpavlin 32 int *pending_timer_interrupts;
64 dpavlin 20 int last_int;
65 dpavlin 12 };
66 dpavlin 4
67 dpavlin 12
68 dpavlin 4 struct machine {
69     /* Pointer back to the emul struct we are in: */
70     struct emul *emul;
71    
72 dpavlin 32 /* Settings: */
73     struct settings *settings;
74    
75 dpavlin 4 /* Name as choosen by the user: */
76     char *name;
77    
78 dpavlin 34 /* Full "path" to the machine, e.g. "emul[0].machine[0]": */
79     char *path;
80    
81 dpavlin 4 int arch; /* ARCH_MIPS, ARCH_PPC, .. */
82 dpavlin 22 int machine_type; /* MACHINE_PMAX, .. */
83 dpavlin 4 int machine_subtype; /* MACHINE_DEC_3MAX_5000, .. */
84    
85 dpavlin 34 /* NOTE/TODO: This isn't working yet: */
86 dpavlin 24 int cycle_accurate; /* Set to non-zero for cycle
87     accurate (slow) emulation. */
88    
89 dpavlin 22 /* Name set by code in src/machines/machine_*.c: */
90 dpavlin 4 char *machine_name;
91    
92 dpavlin 22 int stable; /* startup warning for non-stable
93     emulation modes. */
94    
95 dpavlin 4 /* The serial number is mostly used when emulating multiple machines
96     in a network. nr_of_nics is the current nr of network cards, which
97     is useful when emulating multiple cards in one machine: */
98     int serial_nr;
99     int nr_of_nics;
100    
101 dpavlin 28 /* TODO: How about multiple cpu familys in one machine? */
102 dpavlin 4 struct cpu_family *cpu_family;
103    
104     /*
105     * The "mainbus":
106     *
107     * o) memory
108     * o) devices
109     * o) CPUs
110     */
111    
112     struct memory *memory;
113    
114     int main_console_handle;
115    
116     /* Hardware devices, run every x clock cycles. */
117     int n_tick_entries;
118     int ticks_till_next[MAX_TICK_FUNCTIONS];
119     int ticks_reset_value[MAX_TICK_FUNCTIONS];
120     void (*tick_func[MAX_TICK_FUNCTIONS])(struct cpu *, void *);
121     void *tick_extra[MAX_TICK_FUNCTIONS];
122 dpavlin 24 double tick_hz[MAX_TICK_FUNCTIONS];
123 dpavlin 4
124     char *cpu_name; /* TODO: remove this, there could be several
125     cpus with different names in a machine */
126     int byte_order_override;
127     int bootstrap_cpu;
128     int use_random_bootstrap_cpu;
129     int start_paused;
130     int ncpus;
131     struct cpu **cpus;
132    
133     /* These are used by stuff in cpu.c, mostly: */
134 dpavlin 34 /* TODO: Move to cpu.h! */
135 dpavlin 28 int64_t ninstrs;
136     int64_t ninstrs_show;
137     int64_t ninstrs_flush;
138     int64_t ninstrs_since_gettimeofday;
139 dpavlin 10 struct timeval starttime;
140 dpavlin 4
141     struct diskimage *first_diskimage;
142    
143     struct symbol_context symbol_context;
144    
145     int random_mem_contents;
146     int physical_ram_in_mb;
147     int memory_offset_in_mb;
148     int prom_emulation;
149     int register_dump;
150 dpavlin 12 int arch_pagesize;
151 dpavlin 4
152 dpavlin 22 int bootdev_type;
153     int bootdev_id;
154     char *bootstr;
155     char *bootarg;
156    
157 dpavlin 28 /* Breakpoints: */
158 dpavlin 4 int n_breakpoints;
159     char *breakpoint_string[MAX_BREAKPOINTS];
160     uint64_t breakpoint_addr[MAX_BREAKPOINTS];
161     int breakpoint_flags[MAX_BREAKPOINTS];
162    
163     /* Cache sizes: (1 << x) x=0 for default values */
164 dpavlin 34 /* TODO: these should be _PER CPU_! */
165 dpavlin 4 int cache_picache;
166     int cache_pdcache;
167     int cache_secondary;
168     int cache_picache_linesize;
169     int cache_pdcache_linesize;
170     int cache_secondary_linesize;
171    
172     int dbe_on_nonexistant_memaccess;
173 dpavlin 34 int halt_on_nonexistant_memaccess;
174 dpavlin 4 int instruction_trace;
175     int show_nr_of_instructions;
176 dpavlin 28 int show_trace_tree;
177 dpavlin 4 int show_symbolic_register_names;
178     int emulated_hz;
179 dpavlin 28 int allow_instruction_combinations;
180 dpavlin 4 char *userland_emul; /* NULL for no userland emulation */
181     int force_netboot;
182     int slow_serial_interrupts_hack_for_linux;
183     uint64_t file_loaded_end_addr;
184     char *boot_kernel_filename;
185     char *boot_string_argument;
186     int exit_without_entering_debugger;
187     int n_gfx_cards;
188    
189 dpavlin 28 /* Instruction statistics: */
190     char *statistics_filename;
191     FILE *statistics_file;
192     int statistics_enabled;
193     char *statistics_fields; /* "vpi" etc. */
194    
195 dpavlin 6 /* Machine-dependent: (PROM stuff, etc.) */
196     union {
197     struct machine_arcbios arc;
198 dpavlin 24 struct machine_pmax pmax;
199 dpavlin 34 struct of_data *of_data;
200 dpavlin 6 } md;
201 dpavlin 4
202 dpavlin 14 /* Bus-specific interrupt data: */
203 dpavlin 34 /* TODO: Remove! */
204 dpavlin 14 struct isa_pic_data isa_pic_data;
205    
206 dpavlin 4 /* X11/framebuffer stuff: */
207     int use_x11;
208     int x11_scaledown;
209 dpavlin 20 int x11_scaleup;
210 dpavlin 4 int x11_n_display_names;
211     char **x11_display_names;
212     int x11_current_display_name_nr; /* updated by x11.c */
213    
214     int n_fb_windows;
215     struct fb_window **fb_windows;
216     };
217    
218    
219 dpavlin 28 /* Tick function "prototype": */
220     #define DEVICE_TICK(x) void dev_ ## x ## _tick(struct cpu *cpu, void *extra)
221    
222    
223 dpavlin 4 /*
224     * Machine emulation types:
225     */
226    
227     #define ARCH_NOARCH 0
228     #define ARCH_MIPS 1
229     #define ARCH_PPC 2
230     #define ARCH_SPARC 3
231 dpavlin 12 #define ARCH_ALPHA 4
232 dpavlin 34 #define ARCH_ARM 5
233 dpavlin 40 #define ARCH_SH 6
234     #define ARCH_AVR 7
235     #define ARCH_M88K 8
236 dpavlin 4
237     /* MIPS: */
238     #define MACHINE_BAREMIPS 1000
239     #define MACHINE_TESTMIPS 1001
240 dpavlin 22 #define MACHINE_PMAX 1002
241 dpavlin 4 #define MACHINE_COBALT 1003
242     #define MACHINE_HPCMIPS 1004
243     #define MACHINE_PS2 1005
244     #define MACHINE_SGI 1006
245     #define MACHINE_ARC 1007
246 dpavlin 24 #define MACHINE_NETGEAR 1008
247     #define MACHINE_SONYNEWS 1009
248     #define MACHINE_EVBMIPS 1010
249     #define MACHINE_PSP 1011
250     #define MACHINE_ALGOR 1012
251 dpavlin 28 #define MACHINE_QEMU_MIPS 1013
252 dpavlin 4
253     /* PPC: */
254     #define MACHINE_BAREPPC 2000
255     #define MACHINE_TESTPPC 2001
256 dpavlin 38 #define MACHINE_PMPPC 2002
257     #define MACHINE_SANDPOINT 2003
258     #define MACHINE_BEBOX 2004
259     #define MACHINE_PREP 2005
260     #define MACHINE_MACPPC 2006
261     #define MACHINE_MVMEPPC 2007
262 dpavlin 4
263     /* SPARC: */
264     #define MACHINE_BARESPARC 3000
265 dpavlin 12 #define MACHINE_TESTSPARC 3001
266 dpavlin 24 #define MACHINE_SPARC 3002
267 dpavlin 4
268     /* Alpha: */
269 dpavlin 12 #define MACHINE_BAREALPHA 4000
270     #define MACHINE_TESTALPHA 4001
271     #define MACHINE_ALPHA 4002
272 dpavlin 4
273 dpavlin 6 /* ARM: */
274 dpavlin 34 #define MACHINE_BAREARM 5000
275     #define MACHINE_TESTARM 5001
276     #define MACHINE_CATS 5002
277     #define MACHINE_HPCARM 5003
278     #define MACHINE_ZAURUS 5004
279     #define MACHINE_NETWINDER 5005
280     #define MACHINE_SHARK 5006
281     #define MACHINE_IQ80321 5007
282     #define MACHINE_IYONIX 5008
283 dpavlin 38 #define MACHINE_QEMU_ARM 5009
284 dpavlin 6
285 dpavlin 14 /* SH: */
286 dpavlin 40 #define MACHINE_BARESH 6000
287     #define MACHINE_TESTSH 6001
288     #define MACHINE_HPCSH 6002
289     #define MACHINE_DREAMCAST 6003
290     #define MACHINE_LANDISK 6004
291 dpavlin 14
292     /* AVR: */
293 dpavlin 40 #define MACHINE_BAREAVR 7000
294     #define MACHINE_AVR_PAL 7001
295     #define MACHINE_AVR_MAHPONG 7002
296 dpavlin 14
297 dpavlin 40 /* M88K: */
298     #define MACHINE_BAREM88K 8000
299     #define MACHINE_TESTM88K 8001
300    
301 dpavlin 4 /* Other "pseudo"-machines: */
302     #define MACHINE_NONE 0
303     #define MACHINE_USERLAND 100000
304    
305     /* DEC: */
306     #define MACHINE_DEC_PMAX_3100 1
307     #define MACHINE_DEC_3MAX_5000 2
308     #define MACHINE_DEC_3MIN_5000 3
309     #define MACHINE_DEC_3MAXPLUS_5000 4
310     #define MACHINE_DEC_5800 5
311     #define MACHINE_DEC_5400 6
312     #define MACHINE_DEC_MAXINE_5000 7
313     #define MACHINE_DEC_5500 11
314     #define MACHINE_DEC_MIPSMATE_5100 12
315    
316     #define DEC_PROM_CALLBACK_STRUCT 0xffffffffbfc04000ULL
317     #define DEC_PROM_EMULATION 0xffffffffbfc08000ULL
318     #define DEC_PROM_INITIAL_ARGV (INITIAL_STACK_POINTER + 0x80)
319     #define DEC_PROM_STRINGS 0xffffffffbfc20000ULL
320     #define DEC_PROM_TCINFO 0xffffffffbfc2c000ULL
321     #define DEC_MEMMAP_ADDR 0xffffffffbfc30000ULL
322    
323     /* HPCmips: */
324     #define MACHINE_HPCMIPS_CASIO_BE300 1
325     #define MACHINE_HPCMIPS_CASIO_E105 2
326     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_770 3
327     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_780 4
328     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_800 5
329     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_880 6
330     #define MACHINE_HPCMIPS_AGENDA_VR3 7
331     #define MACHINE_HPCMIPS_IBM_WORKPAD_Z50 8
332    
333 dpavlin 14 /* HPCarm: */
334     #define MACHINE_HPCARM_IPAQ 1
335     #define MACHINE_HPCARM_JORNADA720 2
336    
337     /* HPCsh: */
338     #define MACHINE_HPCSH_JORNADA680 1
339     #define MACHINE_HPCSH_JORNADA690 2
340    
341 dpavlin 4 /* SGI and ARC: */
342     #define MACHINE_ARC_NEC_RD94 1
343     #define MACHINE_ARC_JAZZ_PICA 2
344     #define MACHINE_ARC_NEC_R94 3
345     #define MACHINE_ARC_DESKTECH_TYNE 4
346     #define MACHINE_ARC_JAZZ_MAGNUM 5
347     #define MACHINE_ARC_NEC_R98 6
348     #define MACHINE_ARC_JAZZ_M700 7
349     #define MACHINE_ARC_NEC_R96 8
350    
351 dpavlin 20 /* Algor: */
352     #define MACHINE_ALGOR_P4032 4
353     #define MACHINE_ALGOR_P5064 5
354    
355 dpavlin 8 /* EVBMIPS: */
356     #define MACHINE_EVBMIPS_MALTA 1
357 dpavlin 12 #define MACHINE_EVBMIPS_MALTA_BE 2
358 dpavlin 8
359 dpavlin 22 /* PReP: */
360     #define MACHINE_PREP_IBM6050 1
361     #define MACHINE_PREP_MVME2400 2
362    
363 dpavlin 24 /* Sun SPARC: */
364     #define MACHINE_SPARC_SS5 1
365     #define MACHINE_SPARC_SS20 2
366     #define MACHINE_SPARC_ULTRA1 3
367     #define MACHINE_SPARC_ULTRA60 4
368 dpavlin 36 #define MACHINE_SPARC_SUN4V 5
369 dpavlin 24
370 dpavlin 4 /* MacPPC: TODO: Real model names */
371 dpavlin 24 #define MACHINE_MACPPC_G3 1
372     #define MACHINE_MACPPC_G4 2
373     #define MACHINE_MACPPC_G5 3
374 dpavlin 4
375 dpavlin 22 /* MVMEPPC */
376     #define MACHINE_MVMEPPC_1600 1
377     #define MACHINE_MVMEPPC_2100 2
378     #define MACHINE_MVMEPPC_5500 3
379    
380 dpavlin 4
381 dpavlin 22 /* For the automachine system: */
382     struct machine_entry_subtype {
383     int machine_subtype;/* Old-style subtype */
384     const char *name; /* Official name */
385     int n_aliases;
386     char **aliases; /* Aliases */
387     };
388    
389     struct machine_entry {
390     struct machine_entry *next;
391    
392     /* Machine type: */
393     int arch;
394     int machine_type; /* Old-style type */
395     const char *name; /* Official name */
396     int n_aliases;
397     char **aliases; /* Aliases */
398    
399     void (*setup)(struct machine *, struct cpu *);
400     void (*set_default_cpu)(struct machine *);
401     void (*set_default_ram)(struct machine *);
402    
403     /* Machine subtypes: */
404     int n_subtypes;
405     struct machine_entry_subtype **subtype;
406     };
407    
408     #define MACHINE_SETUP_TYPE(n) void (*n)(struct machine *, struct cpu *)
409     #define MACHINE_SETUP(x) void machine_setup_ ## x(struct machine *machine, \
410     struct cpu *cpu)
411     #define MACHINE_DEFAULT_CPU(x) void machine_default_cpu_ ## x(struct machine *machine)
412     #define MACHINE_DEFAULT_RAM(x) void machine_default_ram_ ## x(struct machine *machine)
413     #define MACHINE_REGISTER(x) void machine_register_ ## x(void)
414 dpavlin 26 #define MR_DEFAULT(x,name,arch,type) struct machine_entry \
415     *me = machine_entry_new(name,arch,type); \
416     me->setup = machine_setup_ ## x; \
417     me->set_default_cpu = machine_default_cpu_ ## x; \
418     machine_entry_register(me, arch);
419 dpavlin 22 void automachine_init(void);
420    
421    
422 dpavlin 4 /* machine.c: */
423 dpavlin 34 struct machine *machine_new(char *name, struct emul *emul, int id);
424 dpavlin 32 void machine_destroy(struct machine *machine);
425 dpavlin 4 int machine_name_to_type(char *stype, char *ssubtype,
426     int *type, int *subtype, int *arch);
427     void machine_add_tickfunction(struct machine *machine,
428 dpavlin 24 void (*func)(struct cpu *, void *), void *extra,
429     int clockshift, double hz);
430 dpavlin 28 void machine_statistics_init(struct machine *, char *fname);
431 dpavlin 22 void machine_register(char *name, MACHINE_SETUP_TYPE(setup));
432 dpavlin 4 void dump_mem_string(struct cpu *cpu, uint64_t addr);
433     void store_string(struct cpu *cpu, uint64_t addr, char *s);
434     int store_64bit_word(struct cpu *cpu, uint64_t addr, uint64_t data64);
435     int store_32bit_word(struct cpu *cpu, uint64_t addr, uint64_t data32);
436     int store_16bit_word(struct cpu *cpu, uint64_t addr, uint64_t data16);
437 dpavlin 6 void store_byte(struct cpu *cpu, uint64_t addr, uint8_t data);
438 dpavlin 4 void store_64bit_word_in_host(struct cpu *cpu, unsigned char *data,
439     uint64_t data32);
440     void store_32bit_word_in_host(struct cpu *cpu, unsigned char *data,
441     uint64_t data32);
442     void store_16bit_word_in_host(struct cpu *cpu, unsigned char *data,
443     uint16_t data16);
444 dpavlin 32 uint64_t load_64bit_word(struct cpu *cpu, uint64_t addr);
445 dpavlin 4 uint32_t load_32bit_word(struct cpu *cpu, uint64_t addr);
446     uint16_t load_16bit_word(struct cpu *cpu, uint64_t addr);
447     void store_buf(struct cpu *cpu, uint64_t addr, char *s, size_t len);
448 dpavlin 22 void add_environment_string(struct cpu *cpu, char *s, uint64_t *addr);
449     void add_environment_string_dual(struct cpu *cpu,
450     uint64_t *ptrp, uint64_t *addrp, char *s1, char *s2);
451     void store_pointer_and_advance(struct cpu *cpu, uint64_t *addrp,
452     uint64_t data, int flag64);
453 dpavlin 4 void machine_setup(struct machine *);
454     void machine_memsize_fix(struct machine *);
455     void machine_default_cputype(struct machine *);
456     void machine_dumpinfo(struct machine *);
457 dpavlin 26 int machine_run(struct machine *machine);
458 dpavlin 4 void machine_list_available_types_and_cpus(void);
459 dpavlin 22 struct machine_entry *machine_entry_new(const char *name,
460 dpavlin 26 int arch, int oldstyle_type);
461     void machine_entry_add_alias(struct machine_entry *me, const char *name);
462     void machine_entry_add_subtype(struct machine_entry *me, const char *name,
463     int oldstyle_subtype, ...);
464     void machine_entry_register(struct machine_entry *me, int arch);
465 dpavlin 4 void machine_init(void);
466    
467    
468     #endif /* MACHINE_H */

  ViewVC Help
Powered by ViewVC 1.1.26