Revision c7ba218d hw/sun4u.c
b/hw/sun4u.c | ||
---|---|---|
1 | 1 |
/* |
2 |
* QEMU Sun4u System Emulator |
|
2 |
* QEMU Sun4u/Sun4v System Emulator
|
|
3 | 3 |
* |
4 | 4 |
* Copyright (c) 2005 Fabrice Bellard |
5 | 5 |
* |
... | ... | |
45 | 45 |
#define NVRAM_SIZE 0x2000 |
46 | 46 |
#define MAX_IDE_BUS 2 |
47 | 47 |
|
48 |
struct hwdef { |
|
49 |
const char * const default_cpu_model; |
|
50 |
}; |
|
51 |
|
|
48 | 52 |
int DMA_get_channel_mode (int nchan) |
49 | 53 |
{ |
50 | 54 |
return 0; |
... | ... | |
245 | 249 |
|
246 | 250 |
static fdctrl_t *floppy_controller; |
247 | 251 |
|
248 |
/* Sun4u hardware initialisation */
|
|
249 |
static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size,
|
|
250 |
const char *boot_devices, DisplayState *ds,
|
|
251 |
const char *kernel_filename, const char *kernel_cmdline,
|
|
252 |
const char *initrd_filename, const char *cpu_model)
|
|
252 |
static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size,
|
|
253 |
const char *boot_devices, DisplayState *ds,
|
|
254 |
const char *kernel_filename, const char *kernel_cmdline,
|
|
255 |
const char *initrd_filename, const char *cpu_model,
|
|
256 |
const struct hwdef *hwdef)
|
|
253 | 257 |
{ |
254 | 258 |
CPUState *env; |
255 | 259 |
char buf[1024]; |
... | ... | |
267 | 271 |
linux_boot = (kernel_filename != NULL); |
268 | 272 |
|
269 | 273 |
/* init CPUs */ |
270 |
if (cpu_model == NULL) |
|
271 |
cpu_model = "TI UltraSparc II"; |
|
274 |
if (!cpu_model) |
|
275 |
cpu_model = hwdef->default_cpu_model; |
|
276 |
|
|
272 | 277 |
env = cpu_init(cpu_model); |
273 | 278 |
if (!env) { |
274 | 279 |
fprintf(stderr, "Unable to find Sparc CPU definition\n"); |
... | ... | |
409 | 414 |
|
410 | 415 |
} |
411 | 416 |
|
417 |
static const struct hwdef hwdefs[] = { |
|
418 |
/* Sun4u generic PC-like machine */ |
|
419 |
{ |
|
420 |
.default_cpu_model = "TI UltraSparc II", |
|
421 |
}, |
|
422 |
/* Sun4v generic PC-like machine */ |
|
423 |
{ |
|
424 |
.default_cpu_model = "Sun UltraSparc T1", |
|
425 |
}, |
|
426 |
}; |
|
427 |
|
|
428 |
/* Sun4u hardware initialisation */ |
|
429 |
static void sun4u_init(ram_addr_t RAM_size, int vga_ram_size, |
|
430 |
const char *boot_devices, DisplayState *ds, |
|
431 |
const char *kernel_filename, const char *kernel_cmdline, |
|
432 |
const char *initrd_filename, const char *cpu_model) |
|
433 |
{ |
|
434 |
sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename, |
|
435 |
kernel_cmdline, initrd_filename, cpu_model, &hwdefs[0]); |
|
436 |
} |
|
437 |
|
|
438 |
/* Sun4v hardware initialisation */ |
|
439 |
static void sun4v_init(ram_addr_t RAM_size, int vga_ram_size, |
|
440 |
const char *boot_devices, DisplayState *ds, |
|
441 |
const char *kernel_filename, const char *kernel_cmdline, |
|
442 |
const char *initrd_filename, const char *cpu_model) |
|
443 |
{ |
|
444 |
sun4uv_init(RAM_size, vga_ram_size, boot_devices, ds, kernel_filename, |
|
445 |
kernel_cmdline, initrd_filename, cpu_model, &hwdefs[1]); |
|
446 |
} |
|
447 |
|
|
412 | 448 |
QEMUMachine sun4u_machine = { |
413 | 449 |
"sun4u", |
414 | 450 |
"Sun4u platform", |
415 | 451 |
sun4u_init, |
416 | 452 |
PROM_SIZE_MAX + VGA_RAM_SIZE, |
417 | 453 |
}; |
454 |
|
|
455 |
QEMUMachine sun4v_machine = { |
|
456 |
"sun4v", |
|
457 |
"Sun4v platform", |
|
458 |
sun4v_init, |
|
459 |
PROM_SIZE_MAX + VGA_RAM_SIZE, |
|
460 |
}; |
Also available in: Unified diff