mirror of
https://gitlab.com/qemu-project/qemu
synced 2024-11-05 20:35:44 +00:00
Add T1 and T2 CPUs, add a Sun4v machine
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4923 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
d406647966
commit
c7ba218da1
6 changed files with 98 additions and 13 deletions
|
@ -64,6 +64,7 @@ extern QEMUMachine ss1000_machine, ss2000_machine;
|
|||
|
||||
/* sun4u.c */
|
||||
extern QEMUMachine sun4u_machine;
|
||||
extern QEMUMachine sun4v_machine;
|
||||
|
||||
/* integratorcp.c */
|
||||
extern QEMUMachine integratorcp_machine;
|
||||
|
|
59
hw/sun4u.c
59
hw/sun4u.c
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* QEMU Sun4u System Emulator
|
||||
* QEMU Sun4u/Sun4v System Emulator
|
||||
*
|
||||
* Copyright (c) 2005 Fabrice Bellard
|
||||
*
|
||||
|
@ -45,6 +45,10 @@
|
|||
#define NVRAM_SIZE 0x2000
|
||||
#define MAX_IDE_BUS 2
|
||||
|
||||
struct hwdef {
|
||||
const char * const default_cpu_model;
|
||||
};
|
||||
|
||||
int DMA_get_channel_mode (int nchan)
|
||||
{
|
||||
return 0;
|
||||
|
@ -245,11 +249,11 @@ static const int parallel_irq[MAX_PARALLEL_PORTS] = { 7, 7, 7 };
|
|||
|
||||
static fdctrl_t *floppy_controller;
|
||||
|
||||
/* Sun4u hardware initialisation */
|
||||
static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
|
||||
const char *boot_devices, DisplayState *ds,
|
||||
const char *kernel_filename, const char *kernel_cmdline,
|
||||
const char *initrd_filename, const char *cpu_model)
|
||||
static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size,
|
||||
const char *boot_devices, DisplayState *ds,
|
||||
const char *kernel_filename, const char *kernel_cmdline,
|
||||
const char *initrd_filename, const char *cpu_model,
|
||||
const struct hwdef *hwdef)
|
||||
{
|
||||
CPUState *env;
|
||||
char buf[1024];
|
||||
|
@ -267,8 +271,9 @@ static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
|
|||
linux_boot = (kernel_filename != NULL);
|
||||
|
||||
/* init CPUs */
|
||||
if (cpu_model == NULL)
|
||||
cpu_model = "TI UltraSparc II";
|
||||
if (!cpu_model)
|
||||
cpu_model = hwdef->default_cpu_model;
|
||||
|
||||
env = cpu_init(cpu_model);
|
||||
if (!env) {
|
||||
fprintf(stderr, "Unable to find Sparc CPU definition\n");
|
||||
|
@ -409,9 +414,47 @@ static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
|
|||
|
||||
}
|
||||
|
||||
static const struct hwdef hwdefs[] = {
|
||||
/* Sun4u generic PC-like machine */
|
||||
{
|
||||
.default_cpu_model = "TI UltraSparc II",
|
||||
},
|
||||
/* Sun4v generic PC-like machine */
|
||||
{
|
||||
.default_cpu_model = "Sun UltraSparc T1",
|
||||
},
|
||||
};
|
||||
|
||||
/* Sun4u hardware initialisation */
|
||||
static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
|
||||
const char *boot_devices, DisplayState *ds,
|
||||
const char *kernel_filename, const char *kernel_cmdline,
|
||||
const char *initrd_filename, const char *cpu_model)
|
||||
{
|
||||
sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename,
|
||||
kernel_cmdline, initrd_filename, cpu_model, &hwdefs[0]);
|
||||
}
|
||||
|
||||
/* Sun4v hardware initialisation */
|
||||
static void sun4v_init(ram_addr_t RAM_size, int vga_ram_size,
|
||||
const char *boot_devices, DisplayState *ds,
|
||||
const char *kernel_filename, const char *kernel_cmdline,
|
||||
const char *initrd_filename, const char *cpu_model)
|
||||
{
|
||||
sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename,
|
||||
kernel_cmdline, initrd_filename, cpu_model, &hwdefs[1]);
|
||||
}
|
||||
|
||||
QEMUMachine sun4u_machine = {
|
||||
"sun4u",
|
||||
"Sun4u platform",
|
||||
sun4u_init,
|
||||
PROM_SIZE_MAX + VGA_RAM_SIZE,
|
||||
};
|
||||
|
||||
QEMUMachine sun4v_machine = {
|
||||
"sun4v",
|
||||
"Sun4v platform",
|
||||
sun4v_init,
|
||||
PROM_SIZE_MAX + VGA_RAM_SIZE,
|
||||
};
|
||||
|
|
|
@ -75,7 +75,7 @@ For system emulation, the following hardware targets are supported:
|
|||
@item G3 BW PowerMac (PowerPC processor)
|
||||
@item Mac99 PowerMac (PowerPC processor, in progress)
|
||||
@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
|
||||
@item Sun4u (64-bit Sparc processor, in progress)
|
||||
@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
|
||||
@item Malta board (32-bit and 64-bit MIPS processors)
|
||||
@item MIPS Magnum (64-bit MIPS processor)
|
||||
@item ARM Integrator/CP (ARM)
|
||||
|
@ -2315,10 +2315,10 @@ Set the emulated machine type. Default is SS-5.
|
|||
@node Sparc64 System emulator
|
||||
@section Sparc64 System emulator
|
||||
|
||||
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
|
||||
The emulator is not usable for anything yet.
|
||||
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u or
|
||||
Sun4v machine. The emulator is not usable for anything yet.
|
||||
|
||||
QEMU emulates the following sun4u peripherals:
|
||||
QEMU emulates the following peripherals:
|
||||
|
||||
@itemize @minus
|
||||
@item
|
||||
|
@ -2329,8 +2329,24 @@ PCI VGA compatible card with VESA Bochs Extensions
|
|||
Non Volatile RAM M48T59
|
||||
@item
|
||||
PC-compatible serial ports
|
||||
@item
|
||||
2 PCI IDE interfaces with hard disk and CD-ROM support
|
||||
@end itemize
|
||||
|
||||
@c man begin OPTIONS
|
||||
|
||||
The following options are specific to the Sparc64 emulation:
|
||||
|
||||
@table @option
|
||||
|
||||
@item -M [sun4u|sun4v]
|
||||
|
||||
Set the emulated machine type. The default is sun4u.
|
||||
|
||||
@end table
|
||||
|
||||
@c man end
|
||||
|
||||
@node MIPS System emulator
|
||||
@section MIPS System emulator
|
||||
|
||||
|
|
|
@ -86,4 +86,6 @@ Sun4u:
|
|||
- A lot of real machine types
|
||||
|
||||
Sun4v:
|
||||
- To be added
|
||||
- A lot of unimplemented features
|
||||
- A lot of real machine types
|
||||
|
||||
|
|
|
@ -1115,6 +1115,28 @@ static const sparc_def_t sparc_defs[] = {
|
|||
.nwindows = 8,
|
||||
.features = CPU_DEFAULT_FEATURES,
|
||||
},
|
||||
{
|
||||
.name = "Sun UltraSparc T1",
|
||||
// defined in sparc_ifu_fdp.v and ctu.h
|
||||
.iu_version = ((0x3eULL << 48) | (0x23ULL << 32) | (0x02ULL << 24)
|
||||
| (MAXTL << 8)),
|
||||
.fpu_version = 0x00000000,
|
||||
.mmu_version = mmu_sun4v,
|
||||
.nwindows = 8,
|
||||
.features = CPU_DEFAULT_FEATURES | CPU_FEATURE_HYPV | CPU_FEATURE_CMT
|
||||
| CPU_FEATURE_GL,
|
||||
},
|
||||
{
|
||||
.name = "Sun UltraSparc T2",
|
||||
// defined in tlu_asi_ctl.v and n2_revid_cust.v
|
||||
.iu_version = ((0x3eULL << 48) | (0x24ULL << 32) | (0x02ULL << 24)
|
||||
| (MAXTL << 8)),
|
||||
.fpu_version = 0x00000000,
|
||||
.mmu_version = mmu_sun4v,
|
||||
.nwindows = 8,
|
||||
.features = CPU_DEFAULT_FEATURES | CPU_FEATURE_HYPV | CPU_FEATURE_CMT
|
||||
| CPU_FEATURE_GL,
|
||||
},
|
||||
{
|
||||
.name = "NEC UltraSparc I",
|
||||
.iu_version = ((0x22ULL << 48) | (0x10ULL << 32) | (0x40ULL << 24)
|
||||
|
|
|
@ -7,6 +7,7 @@ void register_machines(void)
|
|||
{
|
||||
#ifdef TARGET_SPARC64
|
||||
qemu_register_machine(&sun4u_machine);
|
||||
qemu_register_machine(&sun4v_machine);
|
||||
#else
|
||||
qemu_register_machine(&ss5_machine);
|
||||
qemu_register_machine(&ss10_machine);
|
||||
|
|
Loading…
Reference in a new issue