Revision 5dcb6b91 hw/tcx.c

b/hw/tcx.c
31 31
#define TCX_TEC_NREGS    0x1000
32 32

  
33 33
typedef struct TCXState {
34
    uint32_t addr;
34
    target_phys_addr_t addr;
35 35
    DisplayState *ds;
36 36
    uint8_t *vram;
37 37
    uint32_t *vram24, *cplane;
......
359 359
{
360 360
    TCXState *s = opaque;
361 361
    
362
    qemu_put_be32s(f, (uint32_t *)&s->addr);
363 362
    qemu_put_be32s(f, (uint32_t *)&s->vram);
364 363
    qemu_put_be32s(f, (uint32_t *)&s->vram24);
365 364
    qemu_put_be32s(f, (uint32_t *)&s->cplane);
......
377 376
{
378 377
    TCXState *s = opaque;
379 378
    
380
    if (version_id != 2)
379
    if (version_id != 3)
381 380
        return -EINVAL;
382 381

  
383
    qemu_get_be32s(f, (uint32_t *)&s->addr);
384 382
    qemu_get_be32s(f, (uint32_t *)&s->vram);
385 383
    qemu_get_be32s(f, (uint32_t *)&s->vram24);
386 384
    qemu_get_be32s(f, (uint32_t *)&s->cplane);
......
492 490
    tcx_dummy_writel,
493 491
};
494 492

  
495
void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
493
void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base,
496 494
              unsigned long vram_offset, int vram_size, int width, int height,
497 495
              int depth)
498 496
{
......
513 511
    // 8-bit plane
514 512
    s->vram = vram_base;
515 513
    size = vram_size;
516
    cpu_register_physical_memory(addr + 0x00800000, size, vram_offset);
514
    cpu_register_physical_memory(addr + 0x00800000ULL, size, vram_offset);
517 515
    vram_offset += size;
518 516
    vram_base += size;
519 517

  
520 518
    io_memory = cpu_register_io_memory(0, tcx_dac_read, tcx_dac_write, s);
521
    cpu_register_physical_memory(addr + 0x00200000, TCX_DAC_NREGS, io_memory);
519
    cpu_register_physical_memory(addr + 0x00200000ULL, TCX_DAC_NREGS, io_memory);
522 520

  
523 521
    dummy_memory = cpu_register_io_memory(0, tcx_dummy_read, tcx_dummy_write,
524 522
                                          s);
525
    cpu_register_physical_memory(addr + 0x00700000, TCX_TEC_NREGS,
523
    cpu_register_physical_memory(addr + 0x00700000ULL, TCX_TEC_NREGS,
526 524
                                 dummy_memory);
527 525
    if (depth == 24) {
528 526
        // 24-bit plane
529 527
        size = vram_size * 4;
530 528
        s->vram24 = (uint32_t *)vram_base;
531 529
        s->vram24_offset = vram_offset;
532
        cpu_register_physical_memory(addr + 0x02000000, size, vram_offset);
530
        cpu_register_physical_memory(addr + 0x02000000ULL, size, vram_offset);
533 531
        vram_offset += size;
534 532
        vram_base += size;
535 533

  
......
537 535
        size = vram_size * 4;
538 536
        s->cplane = (uint32_t *)vram_base;
539 537
        s->cplane_offset = vram_offset;
540
        cpu_register_physical_memory(addr + 0x0a000000, size, vram_offset);
538
        cpu_register_physical_memory(addr + 0x0a000000ULL, size, vram_offset);
541 539
        graphic_console_init(s->ds, tcx24_update_display,
542 540
                             tcx24_invalidate_display, tcx24_screen_dump, s);
543 541
    } else {
544
        cpu_register_physical_memory(addr + 0x00300000, TCX_THC_NREGS_8,
542
        cpu_register_physical_memory(addr + 0x00300000ULL, TCX_THC_NREGS_8,
545 543
                                     dummy_memory);
546 544
        graphic_console_init(s->ds, tcx_update_display, tcx_invalidate_display,
547 545
                             tcx_screen_dump, s);
548 546
    }
549 547
    // NetBSD writes here even with 8-bit display
550
    cpu_register_physical_memory(addr + 0x00301000, TCX_THC_NREGS_24,
548
    cpu_register_physical_memory(addr + 0x00301000ULL, TCX_THC_NREGS_24,
551 549
                                 dummy_memory);
552 550

  
553
    register_savevm("tcx", addr, 1, tcx_save, tcx_load, s);
551
    register_savevm("tcx", addr, 3, tcx_save, tcx_load, s);
554 552
    qemu_register_reset(tcx_reset, s);
555 553
    tcx_reset(s);
556 554
    dpy_resize(s->ds, width, height);

Also available in: Unified diff