/[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 20 - (hide annotations)
Mon Oct 8 16:19:23 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 12942 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1055 2005/11/25 22:48:36 debug Exp $
20051031	Adding disassembly support for more ARM instructions (clz,
		smul* etc), and adding a hack to support "new tiny" pages
		for StrongARM.
20051101	Minor documentation updates (NetBSD 2.0.2 -> 2.1, and OpenBSD
		3.7 -> 3.8, and lots of testing).
		Changing from 1-sector PIO mode 0 transfers to 128-sector PIO
		mode 3 (in dev_wdc).
		Various minor ARM dyntrans updates (pc-relative loads from
		within the same page as the instruction are now treated as
		constant "mov").
20051102	Re-enabling instruction combinations (they were accidentally
		disabled).
		Dyntrans TLB entries are now overwritten using a round-robin
		scheme instead of randomly. This increases performance.
		Fixing a typo in file.c (thanks to Chuan-Hua Chang for
		noticing it).
		Experimenting with adding ATAPI support to dev_wdc (to make
		emulated *BSD detect cdroms as cdroms, not harddisks).
20051104	Various minor updates.
20051105	Continuing on the ATAPI emulation. Seems to work well enough
		for a NetBSD/cats installation, but not OpenBSD/cats.
		Various other updates.
20051106	Modifying the -Y command line option to allow scaleup with
		certain graphic controllers (only dev_vga so far), not just
		scaledown.
		Some minor dyntrans cleanups.
20051107	Beginning a cleanup up the PCI subsystem (removing the
		read_register hack, etc).
20051108	Continuing the cleanup; splitting up some pci devices into a
		normal autodev device and some separate pci glue code.
20051109	Continuing on the PCI bus stuff; all old pci_*.c have been
		incorporated into normal devices and/or rewritten as glue code
		only, adding a dummy Intel 82371AB PIIX4 for Malta (not really
		tested yet).
		Minor pckbc fix so that Linux doesn't complain.
		Working on the DEC 21143 NIC (ethernet mac rom stuff mostly).
		Various other minor fixes.
20051110	Some more ARM dyntrans fine-tuning (e.g. some instruction
		combinations (cmps followed by conditional branch within the
		same page) and special cases for DPIs with regform when the
		shifter isn't used).
20051111	ARM dyntrans updates: O(n)->O(1) for just-mark-as-non-
		writable in the generic pc_to_pointers function, and some other
		minor hacks.
		Merging Cobalt and evbmips (Malta) ISA interrupt handling,
		and some minor fixes to allow Linux to accept harddisk irqs.
20051112	Minor device updates (pckbc, dec21143, lpt, ...), most
		importantly fixing the ALI M1543/M5229 so that harddisk irqs
		work with Linux/CATS.
20051113	Some more generalizations of the PCI subsystem.
		Finally took the time to add a hack for SCSI CDROM TOCs; this
		enables OpenBSD to use partition 'a' (as needed by the OpenBSD
		installer), and Windows NT's installer to get a bit further.
		Also fixing dev_wdc to allow Linux to detect ATAPI CDROMs.
		Continuing on the DEC 21143.
20051114	Minor ARM dyntrans tweaks; ARM cmps+branch optimization when
		comparing with 0, and generalizing the xchg instr. comb.
		Adding disassembly of ARM mrrc/mcrr and q{,d}{add,sub}.
20051115	Continuing on various PPC things (BATs, other address trans-
		lation things, various loads/stores, BeBox emulation, etc.).
		Beginning to work on PPC interrupt/exception support.
20051116	Factoring out some code which initializes legacy ISA devices
		from those machines that use them (bus_isa).
		Continuing on PPC interrupt/exception support.
20051117	Minor Malta fixes: RTC year offset = 80, disabling a speed hack
		which caused NetBSD to detect a too fast cpu, and adding a new
		hack to make Linux detect a faster cpu.
		Continuing on the Artesyn PM/PPC emulation mode.
		Adding an Algor emulation skeleton (P4032 and P5064);
		implementing some of the basics.
		Continuing on PPC emulation in general; usage of unimplemented
		SPRs is now easier to track, continuing on memory/exception
		related issues, etc.
20051118	More work on PPC emulation (tgpr0..3, exception handling,
		memory stuff, syscalls, etc.).
20051119	Changing the ARM dyntrans code to mostly use cpu->pc, and not
		necessarily use arm reg 15. Seems to work.
		Various PPC updates; continuing on the PReP emulation mode.
20051120	Adding a workaround/hack to dev_mc146818 to allow NetBSD/prep
		to detect the clock.
20051121	More cleanup of the PCI bus (memory and I/O bases, etc).
		Continuing on various PPC things (decrementer and timebase,
		WDCs on obio (on PReP) use irq 13, not 14/15).
20051122	Continuing on the CPC700 controller (interrupts etc) for PMPPC,
		and on PPC stuff in general.
		Finally! After some bug fixes to the virtual to physical addr
		translation, NetBSD/{prep,pmppc} 2.1 reach userland and are
		stable enough to be interacted with.
		More PCI updates; reverse-endian device access for PowerPC etc.
20051123	Generalizing the IEEE floating point subsystem (moving it out
		from src/cpus/cpu_mips_coproc.c into a new src/float_emul.c).
		Input via slave xterms was sometimes not really working; fixing
		this for ns16550, and a warning message is now displayed if
		multiple non-xterm consoles are active.
		Adding some PPC floating point support, etc.
		Various interrupt related updates (dev_wdc, _ns16550, _8259,
		and the isa32 common code in machine.c).
		NetBSD/prep can now be installed! :-) (Well, with some manual
		commands necessary before running sysinst.) Updating the
		documentation and various other things to reflect this.
20051124	Various minor documentation updates.
		Continuing the work on the DEC 21143 NIC.
20051125	LOTS of work on the 21143. Both OpenBSD and NetBSD work fine
		with it now, except that OpenBSD sometimes gives a time-out
		warning.
		Minor documentation updates.

==============  RELEASE 0.3.7  ==============


1 dpavlin 4 #ifndef MACHINE_H
2     #define MACHINE_H
3    
4     /*
5     * Copyright (C) 2005 Anders Gavare. All rights reserved.
6     *
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 20 * $Id: machine.h,v 1.86 2005/11/22 02:07:40 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 6 #include "machine_x86.h"
41 dpavlin 4
42 dpavlin 14
43 dpavlin 4 #define MAX_BREAKPOINTS 8
44     #define BREAKPOINT_FLAG_R 1
45    
46     #define MAX_TICK_FUNCTIONS 14
47    
48     struct cpu_family;
49     struct diskimage;
50     struct emul;
51     struct fb_window;
52     struct memory;
53    
54     /* Ugly: */
55     struct kn230_csr;
56     struct kn02_csr;
57     struct dec_ioasic_data;
58     struct ps2_data;
59 dpavlin 14 struct footbridge_data;
60 dpavlin 4 struct dec5800_data;
61     struct au1x00_ic_data;
62 dpavlin 10 struct malta_data;
63 dpavlin 4 struct vr41xx_data;
64     struct jazz_data;
65     struct crime_data;
66     struct mace_data;
67     struct sgi_ip20_data;
68     struct sgi_ip22_data;
69     struct sgi_ip30_data;
70 dpavlin 12 struct isa_pic_data {
71 dpavlin 20 struct pic8259_data *pic1;
72     struct pic8259_data *pic2;
73     int last_int;
74     int native_irq;
75 dpavlin 12 };
76 dpavlin 4
77 dpavlin 12
78 dpavlin 20 #define MACHINE_NAME_MAXBUF 150
79 dpavlin 10
80 dpavlin 4 struct machine {
81     /* Pointer back to the emul struct we are in: */
82     struct emul *emul;
83    
84     /* Name as choosen by the user: */
85     char *name;
86    
87     int arch; /* ARCH_MIPS, ARCH_PPC, .. */
88     int machine_type; /* MACHINE_DEC, .. */
89     int machine_subtype; /* MACHINE_DEC_3MAX_5000, .. */
90    
91     char *machine_name;
92    
93     /* The serial number is mostly used when emulating multiple machines
94     in a network. nr_of_nics is the current nr of network cards, which
95     is useful when emulating multiple cards in one machine: */
96     int serial_nr;
97     int nr_of_nics;
98    
99     struct cpu_family *cpu_family;
100    
101     /*
102     * The "mainbus":
103     *
104     * o) memory
105     * o) devices
106     * o) CPUs
107     */
108    
109     struct memory *memory;
110    
111     int main_console_handle;
112    
113     /* Hardware devices, run every x clock cycles. */
114     int n_tick_entries;
115     int ticks_till_next[MAX_TICK_FUNCTIONS];
116     int ticks_reset_value[MAX_TICK_FUNCTIONS];
117     void (*tick_func[MAX_TICK_FUNCTIONS])(struct cpu *, void *);
118     void *tick_extra[MAX_TICK_FUNCTIONS];
119    
120     void (*md_interrupt)(struct machine *m, struct cpu *cpu,
121     int irq_nr, int assert);
122    
123     char *cpu_name; /* TODO: remove this, there could be several
124     cpus with different names in a machine */
125     int byte_order_override;
126     int bootstrap_cpu;
127     int use_random_bootstrap_cpu;
128     int start_paused;
129     int ncpus;
130     struct cpu **cpus;
131    
132     /* These are used by stuff in cpu.c, mostly: */
133     int64_t ncycles;
134     int64_t ncycles_show;
135     int64_t ncycles_flush;
136 dpavlin 10 int64_t ncycles_since_gettimeofday;
137     struct timeval starttime;
138 dpavlin 4 int a_few_cycles;
139     int a_few_instrs;
140    
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     int n_breakpoints;
153     char *breakpoint_string[MAX_BREAKPOINTS];
154     uint64_t breakpoint_addr[MAX_BREAKPOINTS];
155     int breakpoint_flags[MAX_BREAKPOINTS];
156    
157     /* Cache sizes: (1 << x) x=0 for default values */
158     /* TODO: these are _PER CPU_! */
159     int cache_picache;
160     int cache_pdcache;
161     int cache_secondary;
162     int cache_picache_linesize;
163     int cache_pdcache_linesize;
164     int cache_secondary_linesize;
165    
166     int dbe_on_nonexistant_memaccess;
167 dpavlin 12 int dyntrans_alignment_check;
168 dpavlin 4 int bintrans_enable;
169     int old_bintrans_enable;
170     int bintrans_enabled_from_start;
171     int bintrans_size;
172     int instruction_trace;
173     int single_step_on_bad_addr;
174     int show_nr_of_instructions;
175     int show_symbolic_register_names;
176     int64_t max_instructions;
177     int emulated_hz;
178     int max_random_cycles_per_chunk;
179     int speed_tricks;
180     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    
187     int automatic_clock_adjustment;
188     int exit_without_entering_debugger;
189     int show_trace_tree;
190    
191     int n_gfx_cards;
192    
193 dpavlin 6 /* Machine-dependent: (PROM stuff, etc.) */
194     union {
195     struct machine_arcbios arc;
196     struct machine_pc pc;
197     } md;
198 dpavlin 4
199 dpavlin 14 /* Bus-specific interrupt data: */
200     struct isa_pic_data isa_pic_data;
201    
202 dpavlin 6 /* Machine-dependent interrupt specific structs: */
203     union {
204     struct kn230_csr *kn230_csr;
205     struct kn02_csr *kn02_csr;
206     struct dec_ioasic_data *dec_ioasic_data;
207     struct ps2_data *ps2_data;
208     struct dec5800_data *dec5800_csr;
209     struct au1x00_ic_data *au1x00_ic_data;
210     struct vr41xx_data *vr41xx_data;
211     struct jazz_data *jazz_data;
212 dpavlin 10 struct malta_data *malta_data;
213 dpavlin 6 struct sgi_ip20_data *sgi_ip20_data;
214     struct sgi_ip22_data *sgi_ip22_data;
215     struct sgi_ip30_data *sgi_ip30_data;
216     struct {
217     struct crime_data *crime_data;
218     struct mace_data *mace_data;
219     } ip32;
220 dpavlin 14 struct footbridge_data *footbridge_data;
221 dpavlin 20 struct bebox_data *bebox_data;
222     struct prep_data *prep_data;
223     struct cpc700_data *cpc700_data;
224 dpavlin 6 } md_int;
225    
226 dpavlin 4 /* X11/framebuffer stuff: */
227     int use_x11;
228     int x11_scaledown;
229 dpavlin 20 int x11_scaleup;
230 dpavlin 4 int x11_n_display_names;
231     char **x11_display_names;
232     int x11_current_display_name_nr; /* updated by x11.c */
233    
234     int n_fb_windows;
235     struct fb_window **fb_windows;
236     };
237    
238    
239     /*
240     * Machine emulation types:
241     */
242    
243     #define ARCH_NOARCH 0
244     #define ARCH_MIPS 1
245     #define ARCH_PPC 2
246     #define ARCH_SPARC 3
247 dpavlin 12 #define ARCH_ALPHA 4
248     #define ARCH_X86 5
249     #define ARCH_ARM 6
250     #define ARCH_IA64 7
251     #define ARCH_M68K 8
252 dpavlin 14 #define ARCH_SH 9
253     #define ARCH_HPPA 10
254     #define ARCH_I960 11
255     #define ARCH_AVR 12
256 dpavlin 20 #define ARCH_NEWMIPS 13
257 dpavlin 4
258     /* MIPS: */
259     #define MACHINE_BAREMIPS 1000
260     #define MACHINE_TESTMIPS 1001
261     #define MACHINE_DEC 1002
262     #define MACHINE_COBALT 1003
263     #define MACHINE_HPCMIPS 1004
264     #define MACHINE_PS2 1005
265     #define MACHINE_SGI 1006
266     #define MACHINE_ARC 1007
267     #define MACHINE_MESHCUBE 1008
268     #define MACHINE_NETGEAR 1009
269 dpavlin 6 #define MACHINE_SONYNEWS 1010
270 dpavlin 8 #define MACHINE_EVBMIPS 1011
271 dpavlin 10 #define MACHINE_PSP 1012
272 dpavlin 20 #define MACHINE_ALGOR 1013
273 dpavlin 4
274     /* PPC: */
275     #define MACHINE_BAREPPC 2000
276     #define MACHINE_TESTPPC 2001
277     #define MACHINE_WALNUT 2002
278     #define MACHINE_PMPPC 2003
279     #define MACHINE_SANDPOINT 2004
280     #define MACHINE_BEBOX 2005
281     #define MACHINE_PREP 2006
282     #define MACHINE_MACPPC 2007
283     #define MACHINE_DB64360 2008
284    
285     /* SPARC: */
286     #define MACHINE_BARESPARC 3000
287 dpavlin 12 #define MACHINE_TESTSPARC 3001
288     #define MACHINE_ULTRA1 3002
289 dpavlin 4
290     /* Alpha: */
291 dpavlin 12 #define MACHINE_BAREALPHA 4000
292     #define MACHINE_TESTALPHA 4001
293     #define MACHINE_ALPHA 4002
294 dpavlin 4
295     /* X86: */
296 dpavlin 12 #define MACHINE_BAREX86 5000
297     #define MACHINE_X86 5001
298 dpavlin 4
299 dpavlin 6 /* ARM: */
300 dpavlin 12 #define MACHINE_BAREARM 6000
301     #define MACHINE_TESTARM 6001
302 dpavlin 14 #define MACHINE_CATS 6002
303     #define MACHINE_HPCARM 6003
304     #define MACHINE_ZAURUS 6004
305     #define MACHINE_NETWINDER 6005
306     #define MACHINE_SHARK 6006
307     #define MACHINE_IQ80321 6007
308     #define MACHINE_IYONIX 6008
309 dpavlin 6
310 dpavlin 12 /* IA64: */
311     #define MACHINE_BAREIA64 7000
312     #define MACHINE_TESTIA64 7001
313    
314     /* M68K: */
315     #define MACHINE_BAREM68K 8000
316     #define MACHINE_TESTM68K 8001
317    
318 dpavlin 14 /* SH: */
319     #define MACHINE_BARESH 9000
320     #define MACHINE_TESTSH 9001
321     #define MACHINE_HPCSH 9002
322    
323     /* HPPA: */
324     #define MACHINE_BAREHPPA 10000
325     #define MACHINE_TESTHPPA 10001
326    
327     /* I960: */
328     #define MACHINE_BAREI960 11000
329     #define MACHINE_TESTI960 11001
330    
331     /* AVR: */
332     #define MACHINE_BAREAVR 12000
333    
334 dpavlin 20 /* NEWMIPS: */
335     #define MACHINE_BARENEWMIPS 13000
336     #define MACHINE_TESTNEWMIPS 13001
337    
338 dpavlin 4 /* Other "pseudo"-machines: */
339     #define MACHINE_NONE 0
340     #define MACHINE_USERLAND 100000
341    
342     /* DEC: */
343     #define MACHINE_DEC_PMAX_3100 1
344     #define MACHINE_DEC_3MAX_5000 2
345     #define MACHINE_DEC_3MIN_5000 3
346     #define MACHINE_DEC_3MAXPLUS_5000 4
347     #define MACHINE_DEC_5800 5
348     #define MACHINE_DEC_5400 6
349     #define MACHINE_DEC_MAXINE_5000 7
350     #define MACHINE_DEC_5500 11
351     #define MACHINE_DEC_MIPSMATE_5100 12
352    
353     #define DEC_PROM_CALLBACK_STRUCT 0xffffffffbfc04000ULL
354     #define DEC_PROM_EMULATION 0xffffffffbfc08000ULL
355     #define DEC_PROM_INITIAL_ARGV (INITIAL_STACK_POINTER + 0x80)
356     #define DEC_PROM_STRINGS 0xffffffffbfc20000ULL
357     #define DEC_PROM_TCINFO 0xffffffffbfc2c000ULL
358     #define DEC_MEMMAP_ADDR 0xffffffffbfc30000ULL
359    
360     /* HPCmips: */
361     #define MACHINE_HPCMIPS_CASIO_BE300 1
362     #define MACHINE_HPCMIPS_CASIO_E105 2
363     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_770 3
364     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_780 4
365     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_800 5
366     #define MACHINE_HPCMIPS_NEC_MOBILEPRO_880 6
367     #define MACHINE_HPCMIPS_AGENDA_VR3 7
368     #define MACHINE_HPCMIPS_IBM_WORKPAD_Z50 8
369    
370 dpavlin 14 /* HPCarm: */
371     #define MACHINE_HPCARM_IPAQ 1
372     #define MACHINE_HPCARM_JORNADA720 2
373    
374     /* HPCsh: */
375     #define MACHINE_HPCSH_JORNADA680 1
376     #define MACHINE_HPCSH_JORNADA690 2
377    
378 dpavlin 4 /* Playstation 2: */
379     #define PLAYSTATION2_BDA 0xffffffffa0001000ULL
380     #define PLAYSTATION2_OPTARGS 0xffffffff81fff100ULL
381     #define PLAYSTATION2_SIFBIOS 0xffffffffbfc10000ULL
382    
383     /* SGI and ARC: */
384     #define MACHINE_ARC_NEC_RD94 1
385     #define MACHINE_ARC_JAZZ_PICA 2
386     #define MACHINE_ARC_NEC_R94 3
387     #define MACHINE_ARC_DESKTECH_TYNE 4
388     #define MACHINE_ARC_JAZZ_MAGNUM 5
389     #define MACHINE_ARC_NEC_R98 6
390     #define MACHINE_ARC_JAZZ_M700 7
391     #define MACHINE_ARC_NEC_R96 8
392    
393 dpavlin 20 /* Algor: */
394     #define MACHINE_ALGOR_P4032 4
395     #define MACHINE_ALGOR_P5064 5
396    
397 dpavlin 8 /* EVBMIPS: */
398     #define MACHINE_EVBMIPS_MALTA 1
399 dpavlin 12 #define MACHINE_EVBMIPS_MALTA_BE 2
400     #define MACHINE_EVBMIPS_PB1000 3
401 dpavlin 8
402 dpavlin 4 /* MacPPC: TODO: Real model names */
403     #define MACHINE_MACPPC_G4 1
404     #define MACHINE_MACPPC_G5 2
405    
406 dpavlin 6 /* X86: */
407     #define MACHINE_X86_GENERIC 1
408     #define MACHINE_X86_XT 2
409 dpavlin 4
410 dpavlin 6
411 dpavlin 4 /*
412     * Problem: kernels seem to be loaded at low addresses in RAM, so
413     * storing environment strings and memory descriptors there is a bad
414     * idea. They are stored at 0xbfc..... instead. The ARC SPB must
415     * be at physical address 0x1000 though.
416     */
417     #define SGI_SPB_ADDR 0xffffffff80001000ULL
418     /* 0xbfc10000 is firmware callback vector stuff */
419     #define ARC_FIRMWARE_VECTORS 0xffffffffbfc80000ULL
420     #define ARC_FIRMWARE_ENTRIES 0xffffffffbfc88000ULL
421     #define ARC_ARGV_START 0xffffffffbfc90000ULL
422     #define ARC_ENV_STRINGS 0xffffffffbfc98000ULL
423     #define ARC_ENV_POINTERS 0xffffffffbfc9d000ULL
424     #define SGI_SYSID_ADDR 0xffffffffbfca1800ULL
425     #define ARC_DSPSTAT_ADDR 0xffffffffbfca1c00ULL
426     #define ARC_MEMDESC_ADDR 0xffffffffbfca1c80ULL
427     #define ARC_CONFIG_DATA_ADDR 0xffffffffbfca2000ULL
428     #define FIRST_ARC_COMPONENT 0xffffffffbfca8000ULL
429     #define ARC_PRIVATE_VECTORS 0xffffffffbfcb0000ULL
430     #define ARC_PRIVATE_ENTRIES 0xffffffffbfcb8000ULL
431    
432    
433     /* machine.c: */
434     struct machine *machine_new(char *name, struct emul *emul);
435     int machine_name_to_type(char *stype, char *ssubtype,
436     int *type, int *subtype, int *arch);
437     void machine_add_tickfunction(struct machine *machine,
438     void (*func)(struct cpu *, void *), void *extra, int clockshift);
439     void dump_mem_string(struct cpu *cpu, uint64_t addr);
440     void store_string(struct cpu *cpu, uint64_t addr, char *s);
441     int store_64bit_word(struct cpu *cpu, uint64_t addr, uint64_t data64);
442     int store_32bit_word(struct cpu *cpu, uint64_t addr, uint64_t data32);
443     int store_16bit_word(struct cpu *cpu, uint64_t addr, uint64_t data16);
444 dpavlin 6 void store_byte(struct cpu *cpu, uint64_t addr, uint8_t data);
445 dpavlin 4 void store_64bit_word_in_host(struct cpu *cpu, unsigned char *data,
446     uint64_t data32);
447     void store_32bit_word_in_host(struct cpu *cpu, unsigned char *data,
448     uint64_t data32);
449     void store_16bit_word_in_host(struct cpu *cpu, unsigned char *data,
450     uint16_t data16);
451     uint32_t load_32bit_word(struct cpu *cpu, uint64_t addr);
452     uint16_t load_16bit_word(struct cpu *cpu, uint64_t addr);
453     void store_buf(struct cpu *cpu, uint64_t addr, char *s, size_t len);
454     void machine_setup(struct machine *);
455     void machine_memsize_fix(struct machine *);
456     void machine_default_cputype(struct machine *);
457     void machine_dumpinfo(struct machine *);
458     void machine_list_available_types_and_cpus(void);
459     void machine_init(void);
460    
461    
462     #endif /* MACHINE_H */

  ViewVC Help
Powered by ViewVC 1.1.26