/[gxemul]/trunk/src/machines/machine_hpcmips.c
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/machines/machine_hpcmips.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 26 - (hide annotations)
Mon Oct 8 16:20:10 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/plain
File size: 16631 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1264 2006/06/25 11:08:04 debug Exp $
20060624	Replacing the error-prone machine type initialization stuff
		with something more reasonable.
		Finally removing the old "cpu_run" kludge; moving around stuff
		in machine.c and emul.c to better suit the dyntrans system.
		Various minor dyntrans cleanups (renaming translate_address to
		translate_v2p, and experimenting with template physpages).
20060625	Removing the speed hack which separated the vph entries into
		two halves (code vs data); things seem a lot more stable now.
		Minor performance hack: R2000/R3000 cache isolation now only
		clears address translations when going into isolation, not
		when going out of it.
		Fixing the MIPS interrupt problems by letting mtc0 immediately
		cause interrupts.

==============  RELEASE 0.4.0.1  ==============


1 dpavlin 22 /*
2     * Copyright (C) 2003-2006 Anders Gavare. All rights reserved.
3     *
4     * Redistribution and use in source and binary forms, with or without
5     * modification, are permitted provided that the following conditions are met:
6     *
7     * 1. Redistributions of source code must retain the above copyright
8     * notice, this list of conditions and the following disclaimer.
9     * 2. Redistributions in binary form must reproduce the above copyright
10     * notice, this list of conditions and the following disclaimer in the
11     * documentation and/or other materials provided with the distribution.
12     * 3. The name of the author may not be used to endorse or promote products
13     * derived from this software without specific prior written permission.
14     *
15     * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16     * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17     * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18     * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19     * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20     * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21     * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22     * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23     * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24     * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25     * SUCH DAMAGE.
26     *
27     *
28 dpavlin 26 * $Id: machine_hpcmips.c,v 1.3 2006/06/24 10:19:19 debug Exp $
29 dpavlin 22 */
30    
31     #include <stdio.h>
32     #include <stdlib.h>
33     #include <string.h>
34    
35     #include "cpu.h"
36     #include "device.h"
37     #include "devices.h"
38     #include "machine.h"
39     #include "machine_interrupts.h"
40     #include "memory.h"
41     #include "misc.h"
42    
43     #include "hpc_bootinfo.h"
44     #include "vripreg.h"
45    
46    
47     MACHINE_SETUP(hpcmips)
48     {
49     char tmpstr[1000];
50     struct hpc_bootinfo hpc_bootinfo;
51     int hpc_platid_flags = 0, hpc_platid_cpu_submodel = 0,
52     hpc_platid_cpu_model = 0, hpc_platid_cpu_series = 0,
53     hpc_platid_cpu_arch = 0,
54     hpc_platid_submodel = 0, hpc_platid_model = 0,
55     hpc_platid_series = 0, hpc_platid_vendor = 0;
56     uint64_t hpc_fb_addr = 0;
57     int hpc_fb_bits = 0, hpc_fb_encoding = 0;
58     int hpc_fb_xsize = 0;
59     int hpc_fb_ysize = 0;
60     int hpc_fb_xsize_mem = 0;
61     int hpc_fb_ysize_mem = 0;
62    
63     cpu->byte_order = EMUL_LITTLE_ENDIAN;
64     memset(&hpc_bootinfo, 0, sizeof(hpc_bootinfo));
65    
66     /*
67     * NOTE: See http://forums.projectmayo.com/viewtopic.php?topic=2743&
68     * forum=23 for info on framebuffer addresses.
69     */
70    
71     switch (machine->machine_subtype) {
72    
73     case MACHINE_HPCMIPS_CASIO_BE300:
74     /* 166MHz VR4131 */
75     machine->machine_name = "Casio Cassiopeia BE-300";
76     hpc_fb_addr = 0x0a200000;
77     hpc_fb_xsize = 240;
78     hpc_fb_ysize = 320;
79     hpc_fb_xsize_mem = 256;
80     hpc_fb_ysize_mem = 320;
81     hpc_fb_bits = 15;
82     hpc_fb_encoding = BIFB_D16_0000;
83    
84     /* TODO: irq? */
85     snprintf(tmpstr, sizeof(tmpstr), "ns16550 irq=0 addr=0x"
86     "0a008680 addr_mult=4 in_use=%i", machine->use_x11? 0 : 1);
87     machine->main_console_handle = (size_t)
88     device_add(machine, tmpstr);
89    
90     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
91     machine->memory, 4131);
92     machine->md_interrupt = vr41xx_interrupt;
93    
94     hpc_platid_cpu_arch = 1; /* MIPS */
95     hpc_platid_cpu_series = 1; /* VR */
96     hpc_platid_cpu_model = 1; /* VR41XX */
97     hpc_platid_cpu_submodel = 6; /* VR4131 */
98     hpc_platid_vendor = 3; /* Casio */
99     hpc_platid_series = 1; /* CASSIOPEIAE */
100     hpc_platid_model = 2; /* EXXX */
101     hpc_platid_submodel = 3; /* E500 */
102     /* TODO: Don't use model number for E500, it's a BE300! */
103     break;
104    
105     case MACHINE_HPCMIPS_CASIO_E105:
106     /* 131MHz VR4121 */
107     machine->machine_name = "Casio Cassiopeia E-105";
108     hpc_fb_addr = 0x0a200000; /* TODO? */
109     hpc_fb_xsize = 240;
110     hpc_fb_ysize = 320;
111     hpc_fb_xsize_mem = 256;
112     hpc_fb_ysize_mem = 320;
113     hpc_fb_bits = 16;
114     hpc_fb_encoding = BIFB_D16_0000;
115    
116     /* TODO: irq? */
117     snprintf(tmpstr, sizeof(tmpstr), "ns16550 irq=0 addr=0x"
118     "0a008680 addr_mult=4 in_use=%i", machine->use_x11? 0 : 1);
119     machine->main_console_handle = (size_t)
120     device_add(machine, tmpstr);
121    
122     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
123     machine->memory, 4121);
124     machine->md_interrupt = vr41xx_interrupt;
125    
126     hpc_platid_cpu_arch = 1; /* MIPS */
127     hpc_platid_cpu_series = 1; /* VR */
128     hpc_platid_cpu_model = 1; /* VR41XX */
129     hpc_platid_cpu_submodel = 3; /* VR4121 */
130     hpc_platid_vendor = 3; /* Casio */
131     hpc_platid_series = 1; /* CASSIOPEIAE */
132     hpc_platid_model = 2; /* EXXX */
133     hpc_platid_submodel = 2; /* E105 */
134     break;
135    
136     case MACHINE_HPCMIPS_NEC_MOBILEPRO_770:
137     /* 131 MHz VR4121 */
138     machine->machine_name = "NEC MobilePro 770";
139     machine->stable = 1;
140     hpc_fb_addr = 0xa000000;
141     hpc_fb_xsize = 640;
142     hpc_fb_ysize = 240;
143     hpc_fb_xsize_mem = 800;
144     hpc_fb_ysize_mem = 240;
145     hpc_fb_bits = 16;
146     hpc_fb_encoding = BIFB_D16_0000;
147    
148     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
149     machine->memory, 4121);
150     machine->md_interrupt = vr41xx_interrupt;
151    
152     hpc_platid_cpu_arch = 1; /* MIPS */
153     hpc_platid_cpu_series = 1; /* VR */
154     hpc_platid_cpu_model = 1; /* VR41XX */
155     hpc_platid_cpu_submodel = 3; /* VR4121 */
156     hpc_platid_vendor = 1; /* NEC */
157     hpc_platid_series = 2; /* NEC MCR */
158     hpc_platid_model = 2; /* MCR 5XX */
159     hpc_platid_submodel = 4; /* MCR 520A */
160     break;
161    
162     case MACHINE_HPCMIPS_NEC_MOBILEPRO_780:
163     /* 166 (or 168) MHz VR4121 */
164     machine->machine_name = "NEC MobilePro 780";
165     machine->stable = 1;
166     hpc_fb_addr = 0xa180100;
167     hpc_fb_xsize = 640;
168     hpc_fb_ysize = 240;
169     hpc_fb_xsize_mem = 640;
170     hpc_fb_ysize_mem = 240;
171     hpc_fb_bits = 16;
172     hpc_fb_encoding = BIFB_D16_0000;
173    
174     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
175     machine->memory, 4121);
176     machine->md_interrupt = vr41xx_interrupt;
177    
178     hpc_platid_cpu_arch = 1; /* MIPS */
179     hpc_platid_cpu_series = 1; /* VR */
180     hpc_platid_cpu_model = 1; /* VR41XX */
181     hpc_platid_cpu_submodel = 3; /* VR4121 */
182     hpc_platid_vendor = 1; /* NEC */
183     hpc_platid_series = 2; /* NEC MCR */
184     hpc_platid_model = 2; /* MCR 5XX */
185     hpc_platid_submodel = 8; /* MCR 530A */
186     break;
187    
188     case MACHINE_HPCMIPS_NEC_MOBILEPRO_800:
189     /* 131 MHz VR4121 */
190     machine->machine_name = "NEC MobilePro 800";
191     machine->stable = 1;
192     hpc_fb_addr = 0xa000000;
193     hpc_fb_xsize = 800;
194     hpc_fb_ysize = 600;
195     hpc_fb_xsize_mem = 800;
196     hpc_fb_ysize_mem = 600;
197     hpc_fb_bits = 16;
198     hpc_fb_encoding = BIFB_D16_0000;
199    
200     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
201     machine->memory, 4121);
202     machine->md_interrupt = vr41xx_interrupt;
203    
204     hpc_platid_cpu_arch = 1; /* MIPS */
205     hpc_platid_cpu_series = 1; /* VR */
206     hpc_platid_cpu_model = 1; /* VR41XX */
207     hpc_platid_cpu_submodel = 3; /* VR4121 */
208     hpc_platid_vendor = 1; /* NEC */
209     hpc_platid_series = 2; /* NEC MCR */
210     hpc_platid_model = 3; /* MCR 7XX */
211     hpc_platid_submodel = 2; /* MCR 700A */
212     break;
213    
214     case MACHINE_HPCMIPS_NEC_MOBILEPRO_880:
215     /* 168 MHz VR4121 */
216     machine->machine_name = "NEC MobilePro 880";
217     machine->stable = 1;
218     hpc_fb_addr = 0xa0ea600;
219     hpc_fb_xsize = 800;
220     hpc_fb_ysize = 600;
221     hpc_fb_xsize_mem = 800;
222     hpc_fb_ysize_mem = 600;
223     hpc_fb_bits = 16;
224     hpc_fb_encoding = BIFB_D16_0000;
225    
226     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
227     machine->memory, 4121);
228     machine->md_interrupt = vr41xx_interrupt;
229    
230     hpc_platid_cpu_arch = 1; /* MIPS */
231     hpc_platid_cpu_series = 1; /* VR */
232     hpc_platid_cpu_model = 1; /* VR41XX */
233     hpc_platid_cpu_submodel = 3; /* VR4121 */
234     hpc_platid_vendor = 1; /* NEC */
235     hpc_platid_series = 2; /* NEC MCR */
236     hpc_platid_model = 3; /* MCR 7XX */
237     hpc_platid_submodel = 4; /* MCR 730A */
238     break;
239    
240     case MACHINE_HPCMIPS_AGENDA_VR3:
241     /* 66 MHz VR4181 */
242     machine->machine_name = "Agenda VR3";
243     /* TODO: */
244     hpc_fb_addr = 0x1000;
245     hpc_fb_xsize = 160;
246     hpc_fb_ysize = 240;
247     hpc_fb_xsize_mem = 160;
248     hpc_fb_ysize_mem = 240;
249     hpc_fb_bits = 4;
250     hpc_fb_encoding = BIFB_D4_M2L_F;
251    
252     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
253     machine->memory, 4181);
254     machine->md_interrupt = vr41xx_interrupt;
255    
256     /* TODO: Hm... irq 17 according to linux, but
257     VRIP_INTR_SIU (=9) here? */
258     {
259     int x;
260     snprintf(tmpstr, sizeof(tmpstr),
261     "ns16550 irq=%i addr=0x0c000010", 8+VRIP_INTR_SIU);
262     x = (size_t)device_add(machine, tmpstr);
263    
264     if (!machine->use_x11)
265     machine->main_console_handle = x;
266     }
267    
268     hpc_platid_cpu_arch = 1; /* MIPS */
269     hpc_platid_cpu_series = 1; /* VR */
270     hpc_platid_cpu_model = 1; /* VR41XX */
271     hpc_platid_cpu_submodel = 4; /* VR4181 */
272     hpc_platid_vendor = 15; /* Agenda */
273     hpc_platid_series = 1; /* VR */
274     hpc_platid_model = 1; /* VR3 */
275     hpc_platid_submodel = 0; /* - */
276    
277     dev_ram_init(machine, 0x0f000000, 0x01000000,
278     DEV_RAM_MIRROR | DEV_RAM_MIGHT_POINT_TO_DEVICES, 0x0);
279     break;
280    
281     case MACHINE_HPCMIPS_IBM_WORKPAD_Z50:
282     /* 131 MHz VR4121 */
283     machine->machine_name = "IBM Workpad Z50";
284     /* TODO: */
285     hpc_fb_addr = 0xa000000;
286     hpc_fb_xsize = 640;
287     hpc_fb_ysize = 480;
288     hpc_fb_xsize_mem = 640;
289     hpc_fb_ysize_mem = 480;
290     hpc_fb_bits = 16;
291     hpc_fb_encoding = BIFB_D16_0000;
292    
293     machine->md_int.vr41xx_data = dev_vr41xx_init(machine,
294     machine->memory, 4121);
295     machine->md_interrupt = vr41xx_interrupt;
296    
297     hpc_platid_cpu_arch = 1; /* MIPS */
298     hpc_platid_cpu_series = 1; /* VR */
299     hpc_platid_cpu_model = 1; /* VR41XX */
300     hpc_platid_cpu_submodel = 3; /* VR4121 */
301     hpc_platid_vendor = 9; /* IBM */
302     hpc_platid_series = 1; /* WorkPad */
303     hpc_platid_model = 1; /* Z50 */
304     hpc_platid_submodel = 0; /* 0 */
305     break;
306    
307     default:printf("Unimplemented hpcmips machine number.\n");
308     exit(1);
309     }
310    
311     store_32bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.platid_cpu,
312     (hpc_platid_cpu_arch << 26) + (hpc_platid_cpu_series << 20)
313     + (hpc_platid_cpu_model << 14) + (hpc_platid_cpu_submodel << 8)
314     + hpc_platid_flags);
315     store_32bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.
316     platid_machine, (hpc_platid_vendor << 22) + (hpc_platid_series<<16)
317     + (hpc_platid_model << 8) + hpc_platid_submodel);
318    
319     if (machine->use_x11) {
320     machine->main_console_handle =
321     machine->md_int.vr41xx_data->kiu_console_handle;
322     }
323    
324     if (hpc_fb_addr != 0) {
325     dev_fb_init(machine, machine->memory, hpc_fb_addr, VFB_HPC,
326     hpc_fb_xsize, hpc_fb_ysize,
327     hpc_fb_xsize_mem, hpc_fb_ysize_mem,
328     hpc_fb_bits, machine->machine_name);
329    
330     /* NetBSD/hpcmips uses framebuffer at physical
331     address 0x8.......: */
332     dev_ram_init(machine, 0x80000000, 0x20000000,
333     DEV_RAM_MIRROR | DEV_RAM_MIGHT_POINT_TO_DEVICES, 0x0);
334     }
335    
336     if (!machine->prom_emulation)
337     return;
338    
339    
340     /* NetBSD/hpcmips and possibly others expects the following: */
341    
342     cpu->cd.mips.gpr[MIPS_GPR_A0] = 1; /* argc */
343     cpu->cd.mips.gpr[MIPS_GPR_A1] = machine->physical_ram_in_mb * 1048576
344     + 0xffffffff80000000ULL - 512; /* argv */
345     cpu->cd.mips.gpr[MIPS_GPR_A2] = machine->physical_ram_in_mb * 1048576
346     + 0xffffffff80000000ULL - 256; /* ptr to hpc_bootinfo */
347    
348     machine->bootstr = machine->boot_kernel_filename;
349     store_32bit_word(cpu, 0x80000000ULL + (machine->physical_ram_in_mb <<
350     20) - 512, 0x80000000ULL + (machine->physical_ram_in_mb << 20)
351     - 512 + 16);
352     store_32bit_word(cpu, 0x80000000ULL + (machine->physical_ram_in_mb <<
353     20) - 512 + 4, 0);
354     store_string(cpu, 0x80000000ULL + (machine->physical_ram_in_mb <<
355     20) - 512 + 16, machine->bootstr);
356    
357     /* Special case for the Agenda VR3: */
358     if (machine->machine_subtype == MACHINE_HPCMIPS_AGENDA_VR3) {
359     const int tmplen = 1000;
360     char *tmp = malloc(tmplen);
361    
362     cpu->cd.mips.gpr[MIPS_GPR_A0] = 2; /* argc */
363    
364     store_32bit_word(cpu, 0x80000000 + machine->physical_ram_in_mb
365     * 1048576-512 + 4, 0x80000000 + machine->physical_ram_in_mb
366     * 1048576 - 512 + 64);
367     store_32bit_word(cpu, 0x80000000 + machine->physical_ram_in_mb
368     * 1048576 - 512 + 8, 0);
369    
370     snprintf(tmp, tmplen, "root=/dev/rom video=vr4181fb:xres:160,y"
371     "res:240,bpp:4,gray,hpck:3084,inv ether=0,0x03fe0300,eth0");
372     tmp[tmplen-1] = '\0';
373    
374     if (!machine->use_x11)
375     snprintf(tmp+strlen(tmp), tmplen-strlen(tmp),
376     " console=ttyS0,115200");
377     tmp[tmplen-1] = '\0';
378    
379     if (machine->boot_string_argument[0])
380     snprintf(tmp+strlen(tmp), tmplen-strlen(tmp), " %s",
381     machine->boot_string_argument);
382     tmp[tmplen-1] = '\0';
383    
384     store_string(cpu, 0x80000000 + machine->physical_ram_in_mb
385     * 1048576 - 512 + 64, tmp);
386    
387     machine->bootarg = tmp;
388     } else if (machine->boot_string_argument[0]) {
389     cpu->cd.mips.gpr[MIPS_GPR_A0] ++; /* argc */
390    
391     store_32bit_word(cpu, 0x80000000 + machine->physical_ram_in_mb
392     * 1048576-512 + 4, 0x80000000 + machine->physical_ram_in_mb
393     * 1048576 - 512 + 64);
394     store_32bit_word(cpu, 0x80000000 + machine->physical_ram_in_mb
395     * 1048576 - 512 + 8, 0);
396    
397     store_string(cpu, 0x80000000 + machine->physical_ram_in_mb *
398     1048576 - 512 + 64, machine->boot_string_argument);
399    
400     machine->bootarg = machine->boot_string_argument;
401     }
402    
403     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.length,
404     sizeof(hpc_bootinfo));
405     store_32bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.magic,
406     HPC_BOOTINFO_MAGIC);
407     store_32bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.fb_addr,
408     0x80000000 + hpc_fb_addr);
409     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.
410     fb_line_bytes, hpc_fb_xsize_mem * (((hpc_fb_bits-1)|7)+1) / 8);
411     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.fb_width,
412     hpc_fb_xsize);
413     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.fb_height,
414     hpc_fb_ysize);
415     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.fb_type,
416     hpc_fb_encoding);
417     store_16bit_word_in_host(cpu, (unsigned char *)&hpc_bootinfo.bi_cnuse,
418     BI_CNUSE_BUILTIN); /* _BUILTIN or _SERIAL */
419    
420     /* printf("hpc_bootinfo.platid_cpu = 0x%08x\n",
421     hpc_bootinfo.platid_cpu);
422     printf("hpc_bootinfo.platid_machine = 0x%08x\n",
423     hpc_bootinfo.platid_machine); */
424     store_32bit_word_in_host(cpu,(unsigned char *)&hpc_bootinfo.timezone,0);
425     store_buf(cpu, 0x80000000 + machine->physical_ram_in_mb *
426     1048576 - 256, (char *)&hpc_bootinfo, sizeof(hpc_bootinfo));
427     }
428    
429    
430     MACHINE_DEFAULT_CPU(hpcmips)
431     {
432     switch (machine->machine_subtype) {
433     case MACHINE_HPCMIPS_CASIO_BE300:
434     machine->cpu_name = strdup("VR4131");
435     break;
436     case MACHINE_HPCMIPS_CASIO_E105:
437     machine->cpu_name = strdup("VR4121");
438     break;
439     case MACHINE_HPCMIPS_NEC_MOBILEPRO_770:
440     case MACHINE_HPCMIPS_NEC_MOBILEPRO_780:
441     case MACHINE_HPCMIPS_NEC_MOBILEPRO_800:
442     case MACHINE_HPCMIPS_NEC_MOBILEPRO_880:
443     machine->cpu_name = strdup("VR4121");
444     break;
445     case MACHINE_HPCMIPS_AGENDA_VR3:
446     machine->cpu_name = strdup("VR4181");
447     break;
448     case MACHINE_HPCMIPS_IBM_WORKPAD_Z50:
449     machine->cpu_name = strdup("VR4121");
450     break;
451     default:printf("Unimplemented HPCMIPS model?\n");
452     exit(1);
453     }
454     }
455    
456    
457     MACHINE_DEFAULT_RAM(hpcmips)
458     {
459     /* Most have 32 MB by default. */
460     machine->physical_ram_in_mb = 32;
461    
462     switch (machine->machine_subtype) {
463     case MACHINE_HPCMIPS_CASIO_BE300:
464     machine->physical_ram_in_mb = 16;
465     break;
466     case MACHINE_HPCMIPS_CASIO_E105:
467     machine->physical_ram_in_mb = 32;
468     break;
469     case MACHINE_HPCMIPS_AGENDA_VR3:
470     machine->physical_ram_in_mb = 16;
471     break;
472     }
473     }
474    
475    
476     MACHINE_REGISTER(hpcmips)
477     {
478 dpavlin 26 MR_DEFAULT(hpcmips, "Handhelp MIPS (HPCmips)",
479     ARCH_MIPS, MACHINE_HPCMIPS);
480    
481     machine_entry_add_alias(me, "hpcmips");
482    
483     machine_entry_add_subtype(me, "Casio Cassiopeia BE-300",
484     MACHINE_HPCMIPS_CASIO_BE300, "be-300", "be300", NULL);
485    
486     machine_entry_add_subtype(me, "Casio Cassiopeia E-105",
487     MACHINE_HPCMIPS_CASIO_E105, "e-105", "e105", NULL);
488    
489     machine_entry_add_subtype(me, "Agenda VR3", MACHINE_HPCMIPS_AGENDA_VR3,
490     "agenda", "vr3", NULL);
491    
492     machine_entry_add_subtype(me, "IBM WorkPad Z50",
493     MACHINE_HPCMIPS_IBM_WORKPAD_Z50, "workpad", "z50", NULL);
494    
495     machine_entry_add_subtype(me, "NEC MobilePro 770",
496     MACHINE_HPCMIPS_NEC_MOBILEPRO_770, "mobilepro770", NULL);
497    
498     machine_entry_add_subtype(me, "NEC MobilePro 780",
499     MACHINE_HPCMIPS_NEC_MOBILEPRO_780, "mobilepro780", NULL);
500    
501     machine_entry_add_subtype(me, "NEC MobilePro 800",
502     MACHINE_HPCMIPS_NEC_MOBILEPRO_800, "mobilepro800", NULL);
503    
504     machine_entry_add_subtype(me, "NEC MobilePro 880",
505     MACHINE_HPCMIPS_NEC_MOBILEPRO_880, "mobilepro880", NULL);
506    
507 dpavlin 22 me->set_default_ram = machine_default_ram_hpcmips;
508     }
509    

  ViewVC Help
Powered by ViewVC 1.1.26