--- trunk/src/include/machine.h 2007/10/08 16:18:00 4 +++ trunk/src/include/machine.h 2007/10/08 16:18:11 6 @@ -28,7 +28,7 @@ * SUCH DAMAGE. * * - * $Id: machine.h,v 1.46 2005/04/16 02:02:28 debug Exp $ + * $Id: machine.h,v 1.53 2005/06/02 17:11:36 debug Exp $ */ #include @@ -36,6 +36,8 @@ #include "symbol.h" +#include "arcbios.h" +#include "machine_x86.h" #define MAX_BREAKPOINTS 8 #define BREAKPOINT_FLAG_R 1 @@ -173,20 +175,30 @@ int n_gfx_cards; - /* Yuck, this is ugly: */ - struct kn230_csr *kn230_csr; - struct kn02_csr *kn02_csr; - struct dec_ioasic_data *dec_ioasic_data; - struct ps2_data *ps2_data; - struct dec5800_data *dec5800_csr; - struct au1x00_ic_data *au1x00_ic_data; - struct vr41xx_data *vr41xx_data; - struct jazz_data *jazz_data; - struct crime_data *crime_data; - struct mace_data *mace_data; - struct sgi_ip20_data *sgi_ip20_data; - struct sgi_ip22_data *sgi_ip22_data; - struct sgi_ip30_data *sgi_ip30_data; + /* Machine-dependent: (PROM stuff, etc.) */ + union { + struct machine_arcbios arc; + struct machine_pc pc; + } md; + + /* Machine-dependent interrupt specific structs: */ + union { + struct kn230_csr *kn230_csr; + struct kn02_csr *kn02_csr; + struct dec_ioasic_data *dec_ioasic_data; + struct ps2_data *ps2_data; + struct dec5800_data *dec5800_csr; + struct au1x00_ic_data *au1x00_ic_data; + struct vr41xx_data *vr41xx_data; + struct jazz_data *jazz_data; + struct sgi_ip20_data *sgi_ip20_data; + struct sgi_ip22_data *sgi_ip22_data; + struct sgi_ip30_data *sgi_ip30_data; + struct { + struct crime_data *crime_data; + struct mace_data *mace_data; + } ip32; + } md_int; /* X11/framebuffer stuff: */ int use_x11; @@ -212,6 +224,7 @@ #define ARCH_HPPA 5 #define ARCH_ALPHA 6 #define ARCH_X86 7 +#define ARCH_ARM 8 /* MIPS: */ #define MACHINE_BAREMIPS 1000 @@ -224,8 +237,7 @@ #define MACHINE_ARC 1007 #define MACHINE_MESHCUBE 1008 #define MACHINE_NETGEAR 1009 -#define MACHINE_WRT54G 1010 -#define MACHINE_SONYNEWS 1011 +#define MACHINE_SONYNEWS 1010 /* PPC: */ #define MACHINE_BAREPPC 2000 @@ -258,6 +270,10 @@ #define MACHINE_BAREX86 7000 #define MACHINE_X86 7001 +/* ARM: */ +#define MACHINE_BAREARM 8000 +#define MACHINE_TESTARM 8001 + /* Other "pseudo"-machines: */ #define MACHINE_NONE 0 #define MACHINE_USERLAND 100000 @@ -311,6 +327,10 @@ #define MACHINE_MACPPC_G4 1 #define MACHINE_MACPPC_G5 2 +/* X86: */ +#define MACHINE_X86_GENERIC 1 +#define MACHINE_X86_XT 2 + /* * Problem: kernels seem to be loaded at low addresses in RAM, so @@ -345,6 +365,7 @@ int store_64bit_word(struct cpu *cpu, uint64_t addr, uint64_t data64); int store_32bit_word(struct cpu *cpu, uint64_t addr, uint64_t data32); int store_16bit_word(struct cpu *cpu, uint64_t addr, uint64_t data16); +void store_byte(struct cpu *cpu, uint64_t addr, uint8_t data); void store_64bit_word_in_host(struct cpu *cpu, unsigned char *data, uint64_t data32); void store_32bit_word_in_host(struct cpu *cpu, unsigned char *data,