/[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 38 - (hide annotations)
Mon Oct 8 16:21:53 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.1515 2007/04/14 05:39:46 debug Exp $
20070324	Adding a "--debug" option to the configure script, to disable
		optimizations in unstable development builds.
		Moving out SCSI-specific stuff from diskimage.c into a new
		diskimage_scsicmd.c.
		Applying Hĺvard Eidnes' patch for SCSICDROM_READ_DISKINFO and
		SCSICDROM_READ_TRACKINFO. (Not really tested yet.)
		Implementing disk image "overlays" (to allow simple roll-back
		to previous disk state). Adding a 'V' disk flag for this, and
		updating the man page and misc.html.
20070325	Stability fix to cpu_dyntrans.c, when multiple physical pages
		share the same initial table entry. (The ppp == NULL check
		should be physpage_ofs == 0.) Bug found by analysing GXemul
		against a version patched for Godson.
		Fixing a second occurance of the same problem (also in
		cpu_dyntrans.c).
		Fixing a MAJOR physical page leak in cpu_dyntrans.c; pages
		weren't _added_ to the set of translated pages, they _replaced_
		all previous pages. It's amazing that this bug has been able
		to live for this long. (Triggered when emulating >128MB RAM.)
20070326	Removing the GDB debugging stub support; it was too hackish
		and ugly.
20070328	Moving around some native code generation skeleton code.
20070329	The -lm check in the configure script now also checks for sin()
		in addition to sqrt(). (Thanks to Nigel Horne for noticing that
		sqrt was not enough on Fedora Core 6.) (Not verified yet.)
20070330	Fixing an indexing bug in dev_sh4.c, found by using gcc version
		4.3.0 20070323.
20070331	Some more experimentation with native code generation.
20070404	Attempting to fix some more SH4 SCIF interrupt bugs; rewriting
		the SH interrupt assertion/deassertion code somewhat.
20070410	Splitting src/file.c into separate files in src/file/.
		Cleanup: Removing the dummy TS7200, Walnut, PB1000, and
		Meshcube emulation modes, and dev_epcom and dev_au1x00.
		Removing the experimental CHIP8/RCA180x code; it wasn't really
		working much lately, anyway. It was fun while it lasted.
		Also removing the experimental Transputer CPU support.
20070412	Moving the section about how the dynamic translation system
		works from intro.html to a separate translation.html file.
		Minor SH fixes; attempting to get OpenBSD/landisk to run
		without randomly bugging out, but no success yet.
20070413	SH SCI (serial bit interface) should now work together with a
		(new) RS5C313 clock device (for Landisk emulation).
20070414	Moving Redhat/MIPS down from supported to experimental, in
		guestoses.html.
		Preparing for a new release; doing some regression testing etc.

==============  RELEASE 0.4.5  ==============


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 38 * $Id: machine.h,v 1.160 2007/04/10 17:26:20 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     #define ARCH_M68K 6
234     #define ARCH_SH 7
235     #define ARCH_AVR 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 12 /* M68K: */
286 dpavlin 34 #define MACHINE_BAREM68K 6000
287     #define MACHINE_TESTM68K 6001
288 dpavlin 12
289 dpavlin 14 /* SH: */
290 dpavlin 34 #define MACHINE_BARESH 7000
291     #define MACHINE_TESTSH 7001
292     #define MACHINE_HPCSH 7002
293     #define MACHINE_DREAMCAST 7003
294     #define MACHINE_LANDISK 7004
295 dpavlin 14
296     /* AVR: */
297 dpavlin 34 #define MACHINE_BAREAVR 8000
298     #define MACHINE_AVR_PAL 8001
299     #define MACHINE_AVR_MAHPONG 8002
300 dpavlin 14
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