~vcs-imports/qemu/git

« back to all changes in this revision

Viewing changes to hw/integratorcp.c

  • Committer: blueswir1
  • Date: 2007-11-25 08:48:16 UTC
  • Revision ID: git-v1:b76482e76560345c00e7d6c89199ced204a926d2
 Fix buffer mux handling for unconnected serial ports


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3737 c046a42c-6fe2-441c-8c8c-71466251a162

Show diffs side-by-side

added added

removed removed

Lines of Context:
15
15
#include "arm-misc.h"
16
16
#include "net.h"
17
17
 
 
18
void DMA_run (void)
 
19
{
 
20
}
 
21
 
18
22
typedef struct {
19
23
    uint32_t flash_offset;
20
24
    uint32_t cm_osc;
227
231
   integratorcm_write
228
232
};
229
233
 
230
 
static void integratorcm_init(int memsz)
 
234
static void integratorcm_init(int memsz, uint32_t flash_offset)
231
235
{
232
236
    int iomemtype;
233
237
    integratorcm_state *s;
254
258
    }
255
259
    memcpy(integrator_spd + 73, "QEMU-MEMORY", 11);
256
260
    s->cm_init = 0x00000112;
257
 
    s->flash_offset = qemu_ram_alloc(0x100000);
 
261
    s->flash_offset = flash_offset;
258
262
 
259
263
    iomemtype = cpu_register_io_memory(0, integratorcm_readfn,
260
264
                                       integratorcm_writefn, s);
465
469
 
466
470
/* Board init.  */
467
471
 
468
 
static struct arm_boot_info integrator_binfo = {
469
 
    .loader_start = 0x0,
470
 
    .board_id = 0x113,
471
 
};
472
 
 
473
 
static void integratorcp_init(ram_addr_t ram_size, int vga_ram_size,
 
472
static void integratorcp_init(int ram_size, int vga_ram_size,
474
473
                     const char *boot_device, DisplayState *ds,
475
474
                     const char *kernel_filename, const char *kernel_cmdline,
476
475
                     const char *initrd_filename, const char *cpu_model)
477
476
{
478
477
    CPUState *env;
479
 
    uint32_t ram_offset;
 
478
    uint32_t bios_offset;
480
479
    qemu_irq *pic;
481
480
    qemu_irq *cpu_pic;
482
 
    int sd;
483
481
 
484
482
    if (!cpu_model)
485
483
        cpu_model = "arm926";
488
486
        fprintf(stderr, "Unable to find CPU definition\n");
489
487
        exit(1);
490
488
    }
491
 
    ram_offset = qemu_ram_alloc(ram_size);
 
489
    bios_offset = ram_size + vga_ram_size;
492
490
    /* ??? On a real system the first 1Mb is mapped as SSRAM or boot flash.  */
493
 
    /* ??? RAM should repeat to fill physical memory space.  */
 
491
    /* ??? RAM shoud repeat to fill physical memory space.  */
494
492
    /* SDRAM at address zero*/
495
 
    cpu_register_physical_memory(0, ram_size, ram_offset | IO_MEM_RAM);
 
493
    cpu_register_physical_memory(0, ram_size, IO_MEM_RAM);
496
494
    /* And again at address 0x80000000 */
497
 
    cpu_register_physical_memory(0x80000000, ram_size, ram_offset | IO_MEM_RAM);
 
495
    cpu_register_physical_memory(0x80000000, ram_size, IO_MEM_RAM);
498
496
 
499
 
    integratorcm_init(ram_size >> 20);
 
497
    integratorcm_init(ram_size >> 20, bios_offset);
500
498
    cpu_pic = arm_pic_init_cpu(env);
501
499
    pic = icp_pic_init(0x14000000, cpu_pic[ARM_PIC_CPU_IRQ],
502
500
                       cpu_pic[ARM_PIC_CPU_FIQ]);
508
506
    icp_control_init(0xcb000000);
509
507
    pl050_init(0x18000000, pic[3], 0);
510
508
    pl050_init(0x19000000, pic[4], 1);
511
 
    sd = drive_get_index(IF_SD, 0, 0);
512
 
    if (sd == -1) {
513
 
        fprintf(stderr, "qemu: missing SecureDigital card\n");
514
 
        exit(1);
515
 
    }
516
 
    pl181_init(0x1c000000, drives_table[sd].bdrv, pic[23], pic[24]);
 
509
    pl181_init(0x1c000000, sd_bdrv, pic[23], pic[24]);
517
510
    if (nd_table[0].vlan) {
518
511
        if (nd_table[0].model == NULL
519
512
            || strcmp(nd_table[0].model, "smc91c111") == 0) {
528
521
    }
529
522
    pl110_init(ds, 0xc0000000, pic[22], 0);
530
523
 
531
 
    integrator_binfo.ram_size = ram_size;
532
 
    integrator_binfo.kernel_filename = kernel_filename;
533
 
    integrator_binfo.kernel_cmdline = kernel_cmdline;
534
 
    integrator_binfo.initrd_filename = initrd_filename;
535
 
    arm_load_kernel(env, &integrator_binfo);
 
524
    arm_load_kernel(env, ram_size, kernel_filename, kernel_cmdline,
 
525
                    initrd_filename, 0x113, 0x0);
536
526
}
537
527
 
538
528
QEMUMachine integratorcp_machine = {
539
 
    .name = "integratorcp",
540
 
    .desc = "ARM Integrator/CP (ARM926EJ-S)",
541
 
    .init = integratorcp_init,
542
 
    .ram_require = 0x100000,
 
529
    "integratorcp",
 
530
    "ARM Integrator/CP (ARM926EJ-S)",
 
531
    integratorcp_init,
543
532
};