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