Revision c7ba218d

b/hw/boards.h
64 64

  
65 65
/* sun4u.c */
66 66
extern QEMUMachine sun4u_machine;
67
extern QEMUMachine sun4v_machine;
67 68

  
68 69
/* integratorcp.c */
69 70
extern QEMUMachine integratorcp_machine;
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
};
b/qemu-doc.texi
75 75
@item G3 BW PowerMac (PowerPC processor)
76 76
@item Mac99 PowerMac (PowerPC processor, in progress)
77 77
@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
78
@item Sun4u (64-bit Sparc processor, in progress)
78
@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
79 79
@item Malta board (32-bit and 64-bit MIPS processors)
80 80
@item MIPS Magnum (64-bit MIPS processor)
81 81
@item ARM Integrator/CP (ARM)
......
2315 2315
@node Sparc64 System emulator
2316 2316
@section Sparc64 System emulator
2317 2317

  
2318
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u machine.
2319
The emulator is not usable for anything yet.
2318
Use the executable @file{qemu-system-sparc64} to simulate a Sun4u or
2319
Sun4v machine. The emulator is not usable for anything yet.
2320 2320

  
2321
QEMU emulates the following sun4u peripherals:
2321
QEMU emulates the following peripherals:
2322 2322

  
2323 2323
@itemize @minus
2324 2324
@item
......
2329 2329
Non Volatile RAM M48T59
2330 2330
@item
2331 2331
PC-compatible serial ports
2332
@item
2333
2 PCI IDE interfaces with hard disk and CD-ROM support
2332 2334
@end itemize
2333 2335

  
2336
@c man begin OPTIONS
2337

  
2338
The following options are specific to the Sparc64 emulation:
2339

  
2340
@table @option
2341

  
2342
@item -M [sun4u|sun4v]
2343

  
2344
Set the emulated machine type. The default is sun4u.
2345

  
2346
@end table
2347

  
2348
@c man end
2349

  
2334 2350
@node MIPS System emulator
2335 2351
@section MIPS System emulator
2336 2352

  
b/target-sparc/TODO
86 86
 - A lot of real machine types
87 87

  
88 88
Sun4v:
89
- To be added
89
- A lot of unimplemented features
90
 - A lot of real machine types
91

  
b/target-sparc/helper.c
1116 1116
        .features = CPU_DEFAULT_FEATURES,
1117 1117
    },
1118 1118
    {
1119
        .name = "Sun UltraSparc T1",
1120
        // defined in sparc_ifu_fdp.v and ctu.h
1121
        .iu_version = ((0x3eULL << 48) | (0x23ULL << 32) | (0x02ULL << 24)
1122
                       | (MAXTL << 8)),
1123
        .fpu_version = 0x00000000,
1124
        .mmu_version = mmu_sun4v,
1125
        .nwindows = 8,
1126
        .features = CPU_DEFAULT_FEATURES | CPU_FEATURE_HYPV | CPU_FEATURE_CMT
1127
        | CPU_FEATURE_GL,
1128
    },
1129
    {
1130
        .name = "Sun UltraSparc T2",
1131
        // defined in tlu_asi_ctl.v and n2_revid_cust.v
1132
        .iu_version = ((0x3eULL << 48) | (0x24ULL << 32) | (0x02ULL << 24)
1133
                       | (MAXTL << 8)),
1134
        .fpu_version = 0x00000000,
1135
        .mmu_version = mmu_sun4v,
1136
        .nwindows = 8,
1137
        .features = CPU_DEFAULT_FEATURES | CPU_FEATURE_HYPV | CPU_FEATURE_CMT
1138
        | CPU_FEATURE_GL,
1139
    },
1140
    {
1119 1141
        .name = "NEC UltraSparc I",
1120 1142
        .iu_version = ((0x22ULL << 48) | (0x10ULL << 32) | (0x40ULL << 24)
1121 1143
                       | (MAXTL << 8)),
b/target-sparc/machine.c
7 7
{
8 8
#ifdef TARGET_SPARC64
9 9
    qemu_register_machine(&sun4u_machine);
10
    qemu_register_machine(&sun4v_machine);
10 11
#else
11 12
    qemu_register_machine(&ss5_machine);
12 13
    qemu_register_machine(&ss10_machine);

Also available in: Unified diff