25 |
* SUCH DAMAGE. |
* SUCH DAMAGE. |
26 |
* |
* |
27 |
* |
* |
28 |
* $Id: machine.c,v 1.452 2005/06/02 17:11:34 debug Exp $ |
* $Id: machine.c,v 1.453 2005/06/12 12:31:54 debug Exp $ |
29 |
* |
* |
30 |
* Emulation of specific machines. |
* Emulation of specific machines. |
31 |
* |
* |
3569 |
|
|
3570 |
break; |
break; |
3571 |
|
|
3572 |
|
case MACHINE_EVBMIPS: |
3573 |
|
/* |
3574 |
|
* http://www.netbsd.org/Ports/evbmips/ |
3575 |
|
*/ |
3576 |
|
switch (machine->machine_subtype) { |
3577 |
|
case MACHINE_EVBMIPS_MALTA: |
3578 |
|
machine->machine_name = "MALTA (evbmips)"; |
3579 |
|
break; |
3580 |
|
case MACHINE_EVBMIPS_PB1000: |
3581 |
|
machine->machine_name = "PB1000 (evbmips)"; |
3582 |
|
break; |
3583 |
|
default: |
3584 |
|
fatal("Unimplemented EVBMIPS model.\n"); |
3585 |
|
exit(1); |
3586 |
|
} |
3587 |
|
|
3588 |
|
/* This is just a test. TODO */ |
3589 |
|
{ |
3590 |
|
int i; |
3591 |
|
for (i=0; i<32; i++) |
3592 |
|
cpu->cd.mips.gpr[i] = |
3593 |
|
0x01230000 + (i << 8) + 0x55; |
3594 |
|
} |
3595 |
|
|
3596 |
|
/* TODO: Yamon emulation. 0x9fc00504 = putchar? etc. */ |
3597 |
|
|
3598 |
|
break; |
3599 |
|
|
3600 |
case MACHINE_BAREPPC: |
case MACHINE_BAREPPC: |
3601 |
/* |
/* |
3602 |
* A "bare" PPC machine. |
* A "bare" PPC machine. |
4061 |
case MACHINE_SONYNEWS: |
case MACHINE_SONYNEWS: |
4062 |
m->cpu_name = strdup("R3000"); |
m->cpu_name = strdup("R3000"); |
4063 |
break; |
break; |
4064 |
|
case MACHINE_EVBMIPS: |
4065 |
|
switch (m->machine_subtype) { |
4066 |
|
case MACHINE_EVBMIPS_MALTA: |
4067 |
|
m->cpu_name = strdup("5Kc"); |
4068 |
|
break; |
4069 |
|
case MACHINE_EVBMIPS_PB1000: |
4070 |
|
m->cpu_name = strdup("AU1000"); |
4071 |
|
break; |
4072 |
|
default:fatal("Unimpl. evbmips.\n"); |
4073 |
|
exit(1); |
4074 |
|
} |
4075 |
|
break; |
4076 |
case MACHINE_HPCMIPS: |
case MACHINE_HPCMIPS: |
4077 |
switch (m->machine_subtype) { |
switch (m->machine_subtype) { |
4078 |
case MACHINE_HPCMIPS_CASIO_BE300: |
case MACHINE_HPCMIPS_CASIO_BE300: |
4631 |
if (cpu_family_ptr_by_number(ARCH_MIPS) != NULL) { |
if (cpu_family_ptr_by_number(ARCH_MIPS) != NULL) { |
4632 |
me->next = first_machine_entry; first_machine_entry = me; |
me->next = first_machine_entry; first_machine_entry = me; |
4633 |
} |
} |
4634 |
|
|
4635 |
|
/* Evaluation Boards (MALTA etc): */ |
4636 |
|
me = machine_entry_new("evbmips", ARCH_MIPS, |
4637 |
|
MACHINE_EVBMIPS, 1, 2); |
4638 |
|
me->aliases[0] = "evbmips"; |
4639 |
|
me->subtype[0] = machine_entry_subtype_new("Malta", |
4640 |
|
MACHINE_EVBMIPS_MALTA, 1); |
4641 |
|
me->subtype[0]->aliases[0] = "malta"; |
4642 |
|
me->subtype[1] = machine_entry_subtype_new("PB1000", |
4643 |
|
MACHINE_EVBMIPS_PB1000, 1); |
4644 |
|
me->subtype[1]->aliases[0] = "pb1000"; |
4645 |
|
if (cpu_family_ptr_by_number(ARCH_MIPS) != NULL) { |
4646 |
|
me->next = first_machine_entry; first_machine_entry = me; |
4647 |
|
} |
4648 |
|
|
4649 |
/* Macintosh (PPC): */ |
/* Macintosh (PPC): */ |
4650 |
me = machine_entry_new("Macintosh (PPC)", ARCH_PPC, |
me = machine_entry_new("Macintosh (PPC)", ARCH_PPC, |