Revision 5dcb6b91

b/exec.c
64 64

  
65 65
#if defined(TARGET_SPARC64)
66 66
#define TARGET_PHYS_ADDR_SPACE_BITS 41
67
#elif defined(TARGET_SPARC)
68
#define TARGET_PHYS_ADDR_SPACE_BITS 36
67 69
#elif defined(TARGET_ALPHA)
68 70
#define TARGET_PHYS_ADDR_SPACE_BITS 42
69 71
#define TARGET_VIRT_ADDR_SPACE_BITS 42
b/hw/esp.c
562 562
    s->scsi_dev[id] = scsi_disk_init(bd, 0, esp_command_complete, s);
563 563
}
564 564

  
565
void *esp_init(BlockDriverState **bd, uint32_t espaddr, void *dma_opaque)
565
void *esp_init(BlockDriverState **bd, target_phys_addr_t espaddr,
566
               void *dma_opaque)
566 567
{
567 568
    ESPState *s;
568 569
    int esp_io_memory;
b/hw/fdc.c
370 370
    /* HW */
371 371
    qemu_irq irq;
372 372
    int dma_chann;
373
    uint32_t io_base;
373
    target_phys_addr_t io_base;
374 374
    /* Controller state */
375 375
    QEMUTimer *result_timer;
376 376
    uint8_t state;
......
464 464

  
465 465
static uint32_t fdctrl_read_mem (void *opaque, target_phys_addr_t reg)
466 466
{
467
    return fdctrl_read(opaque, reg);
467
    return fdctrl_read(opaque, (uint32_t)reg);
468 468
}
469 469

  
470 470
static void fdctrl_write_mem (void *opaque, 
471 471
                              target_phys_addr_t reg, uint32_t value)
472 472
{
473
    fdctrl_write(opaque, reg, value);
473
    fdctrl_write(opaque, (uint32_t)reg, value);
474 474
}
475 475

  
476 476
static CPUReadMemoryFunc *fdctrl_mem_read[3] = {
......
579 579
}
580 580

  
581 581
fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped, 
582
                       uint32_t io_base,
582
                       target_phys_addr_t io_base,
583 583
                       BlockDriverState **fds)
584 584
{
585 585
    fdctrl_t *fdctrl;
......
613 613
        io_mem = cpu_register_io_memory(0, fdctrl_mem_read, fdctrl_mem_write, fdctrl);
614 614
        cpu_register_physical_memory(io_base, 0x08, io_mem);
615 615
    } else {
616
        register_ioport_read(io_base + 0x01, 5, 1, &fdctrl_read, fdctrl);
617
        register_ioport_read(io_base + 0x07, 1, 1, &fdctrl_read, fdctrl);
618
        register_ioport_write(io_base + 0x01, 5, 1, &fdctrl_write, fdctrl);
619
        register_ioport_write(io_base + 0x07, 1, 1, &fdctrl_write, fdctrl);
616
        register_ioport_read((uint32_t)io_base + 0x01, 5, 1, &fdctrl_read,
617
                             fdctrl);
618
        register_ioport_read((uint32_t)io_base + 0x07, 1, 1, &fdctrl_read,
619
                             fdctrl);
620
        register_ioport_write((uint32_t)io_base + 0x01, 5, 1, &fdctrl_write,
621
                              fdctrl);
622
        register_ioport_write((uint32_t)io_base + 0x07, 1, 1, &fdctrl_write,
623
                              fdctrl);
620 624
    }
621 625
    register_savevm("fdc", io_base, 1, fdc_save, fdc_load, fdctrl);
622 626
    qemu_register_reset(fdctrl_external_reset, fdctrl);
b/hw/iommu.c
87 87
#define PAGE_MASK	(PAGE_SIZE - 1)
88 88

  
89 89
typedef struct IOMMUState {
90
    uint32_t addr;
90
    target_phys_addr_t addr;
91 91
    uint32_t regs[IOMMU_NREGS];
92
    uint32_t iostart;
92
    target_phys_addr_t iostart;
93 93
} IOMMUState;
94 94

  
95 95
static uint32_t iommu_mem_readw(void *opaque, target_phys_addr_t addr)
96 96
{
97 97
    IOMMUState *s = opaque;
98
    uint32_t saddr;
98
    target_phys_addr_t saddr;
99 99

  
100 100
    saddr = (addr - s->addr) >> 2;
101 101
    switch (saddr) {
......
110 110
static void iommu_mem_writew(void *opaque, target_phys_addr_t addr, uint32_t val)
111 111
{
112 112
    IOMMUState *s = opaque;
113
    uint32_t saddr;
113
    target_phys_addr_t saddr;
114 114

  
115 115
    saddr = (addr - s->addr) >> 2;
116 116
    DPRINTF("write reg[%d] = %x\n", saddr, val);
......
118 118
    case IOMMU_CTRL:
119 119
	switch (val & IOMMU_CTRL_RNGE) {
120 120
	case IOMMU_RNGE_16MB:
121
	    s->iostart = 0xff000000;
121
	    s->iostart = 0xffffffffff000000ULL;
122 122
	    break;
123 123
	case IOMMU_RNGE_32MB:
124
	    s->iostart = 0xfe000000;
124
	    s->iostart = 0xfffffffffe000000ULL;
125 125
	    break;
126 126
	case IOMMU_RNGE_64MB:
127
	    s->iostart = 0xfc000000;
127
	    s->iostart = 0xfffffffffc000000ULL;
128 128
	    break;
129 129
	case IOMMU_RNGE_128MB:
130
	    s->iostart = 0xf8000000;
130
	    s->iostart = 0xfffffffff8000000ULL;
131 131
	    break;
132 132
	case IOMMU_RNGE_256MB:
133
	    s->iostart = 0xf0000000;
133
	    s->iostart = 0xfffffffff0000000ULL;
134 134
	    break;
135 135
	case IOMMU_RNGE_512MB:
136
	    s->iostart = 0xe0000000;
136
	    s->iostart = 0xffffffffe0000000ULL;
137 137
	    break;
138 138
	case IOMMU_RNGE_1GB:
139
	    s->iostart = 0xc0000000;
139
	    s->iostart = 0xffffffffc0000000ULL;
140 140
	    break;
141 141
	default:
142 142
	case IOMMU_RNGE_2GB:
143
	    s->iostart = 0x80000000;
143
	    s->iostart = 0xffffffff80000000ULL;
144 144
	    break;
145 145
	}
146
	DPRINTF("iostart = %x\n", s->iostart);
146
	DPRINTF("iostart = %llx\n", s->iostart);
147 147
	s->regs[saddr] = ((val & IOMMU_CTRL_MASK) | IOMMU_VERSION);
148 148
	break;
149 149
    case IOMMU_BASE:
......
186 186
    iommu_mem_writew,
187 187
};
188 188

  
189
static uint32_t iommu_page_get_flags(IOMMUState *s, uint32_t addr)
189
static uint32_t iommu_page_get_flags(IOMMUState *s, target_phys_addr_t addr)
190 190
{
191 191
    uint32_t iopte;
192 192

  
......
196 196
    return ldl_phys(iopte);
197 197
}
198 198

  
199
static uint32_t iommu_translate_pa(IOMMUState *s, uint32_t addr, uint32_t pa)
199
static target_phys_addr_t iommu_translate_pa(IOMMUState *s,
200
                                             target_phys_addr_t addr,
201
                                             uint32_t pte)
200 202
{
201 203
    uint32_t tmppte;
204
    target_phys_addr_t pa;
205

  
206
    tmppte = pte;
207
    pa = ((pte & IOPTE_PAGE) << 4) + (addr & PAGE_MASK);
208
    DPRINTF("xlate dva " TARGET_FMT_plx " => pa " TARGET_FMT_plx
209
            " (iopte = %x)\n", addr, pa, tmppte);
202 210

  
203
    tmppte = pa;
204
    pa = ((pa & IOPTE_PAGE) << 4) + (addr & PAGE_MASK);
205
    DPRINTF("xlate dva %x => pa %x (iopte = %x)\n", addr, pa, tmppte);
206 211
    return pa;
207 212
}
208 213

  
209 214
void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr,
210 215
                           uint8_t *buf, int len, int is_write)
211 216
{
212
    int l, flags;
213
    target_ulong page, phys_addr;
217
    int l;
218
    uint32_t flags;
219
    target_phys_addr_t page, phys_addr;
214 220

  
215 221
    while (len > 0) {
216 222
        page = addr & TARGET_PAGE_MASK;
......
239 245
    IOMMUState *s = opaque;
240 246
    int i;
241 247
    
242
    qemu_put_be32s(f, &s->addr);
243 248
    for (i = 0; i < IOMMU_NREGS; i++)
244 249
	qemu_put_be32s(f, &s->regs[i]);
245
    qemu_put_be32s(f, &s->iostart);
250
    qemu_put_be64s(f, &s->iostart);
246 251
}
247 252

  
248 253
static int iommu_load(QEMUFile *f, void *opaque, int version_id)
......
250 255
    IOMMUState *s = opaque;
251 256
    int i;
252 257
    
253
    if (version_id != 1)
258
    if (version_id != 2)
254 259
        return -EINVAL;
255 260

  
256
    qemu_get_be32s(f, &s->addr);
257 261
    for (i = 0; i < IOMMU_NREGS; i++)
258 262
	qemu_put_be32s(f, &s->regs[i]);
259
    qemu_get_be32s(f, &s->iostart);
263
    qemu_get_be64s(f, &s->iostart);
260 264

  
261 265
    return 0;
262 266
}
......
270 274
    s->regs[0] = IOMMU_VERSION;
271 275
}
272 276

  
273
void *iommu_init(uint32_t addr)
277
void *iommu_init(target_phys_addr_t addr)
274 278
{
275 279
    IOMMUState *s;
276 280
    int iommu_io_memory;
......
284 288
    iommu_io_memory = cpu_register_io_memory(0, iommu_mem_read, iommu_mem_write, s);
285 289
    cpu_register_physical_memory(addr, IOMMU_NREGS * 4, iommu_io_memory);
286 290
    
287
    register_savevm("iommu", addr, 1, iommu_save, iommu_load, s);
291
    register_savevm("iommu", addr, 2, iommu_save, iommu_load, s);
288 292
    qemu_register_reset(iommu_reset, s);
289 293
    return s;
290 294
}
b/hw/m48t59.c
43 43
    /* Hardware parameters */
44 44
    qemu_irq IRQ;
45 45
    int mem_index;
46
    uint32_t mem_base;
46
    target_phys_addr_t mem_base;
47 47
    uint32_t io_base;
48 48
    uint16_t size;
49 49
    /* RTC management */
......
610 610
}
611 611

  
612 612
/* Initialisation routine */
613
m48t59_t *m48t59_init (qemu_irq IRQ, target_ulong mem_base,
613
m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
614 614
                       uint32_t io_base, uint16_t size,
615 615
                       int type)
616 616
{
617 617
    m48t59_t *s;
618
    target_ulong save_base;
618
    target_phys_addr_t save_base;
619 619

  
620 620
    s = qemu_mallocz(sizeof(m48t59_t));
621 621
    if (!s)
b/hw/m48t59.h
6 6
void m48t59_write (m48t59_t *NVRAM, uint32_t addr, uint32_t val);
7 7
uint32_t m48t59_read (m48t59_t *NVRAM, uint32_t addr);
8 8
void m48t59_toggle_lock (m48t59_t *NVRAM, int lock);
9
m48t59_t *m48t59_init (qemu_irq IRQ, target_ulong mem_base,
9
m48t59_t *m48t59_init (qemu_irq IRQ, target_phys_addr_t mem_base,
10 10
                       uint32_t io_base, uint16_t size,
11 11
                       int type);
12 12

  
b/hw/pcnet.c
2018 2018
    (CPUWriteMemoryFunc *)&pcnet_ioport_writew,
2019 2019
};
2020 2020

  
2021
void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque, qemu_irq irq)
2021
void *lance_init(NICInfo *nd, target_phys_addr_t leaddr, void *dma_opaque,
2022
                 qemu_irq irq)
2022 2023
{
2023 2024
    PCNetState *d;
2024 2025
    int lance_io_memory;
b/hw/slavio_intctl.c
371 371
    s->cpu_envs[cpu] = env;
372 372
}
373 373

  
374
void *slavio_intctl_init(uint32_t addr, uint32_t addrg,
374
void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg,
375 375
                         const uint32_t *intbit_to_level,
376 376
                         qemu_irq **irq)
377 377
{
b/hw/slavio_misc.c
212 212
    return 0;
213 213
}
214 214

  
215
void *slavio_misc_init(uint32_t base, qemu_irq irq)
215
void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,
216
                       qemu_irq irq)
216 217
{
217 218
    int slavio_misc_io_memory;
218 219
    MiscState *s;
......
235 236
    // System control
236 237
    cpu_register_physical_memory(base + 0x1f00000, MISC_MAXADDR, slavio_misc_io_memory);
237 238
    // Power management
238
    cpu_register_physical_memory(base + 0xa000000, MISC_MAXADDR, slavio_misc_io_memory);
239
    cpu_register_physical_memory(power_base, MISC_MAXADDR, slavio_misc_io_memory);
239 240

  
240 241
    s->irq = irq;
241 242

  
b/hw/slavio_serial.c
587 587

  
588 588
}
589 589

  
590
SerialState *slavio_serial_init(int base, qemu_irq irq, CharDriverState *chr1,
591
                                CharDriverState *chr2)
590
SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq,
591
                                CharDriverState *chr1, CharDriverState *chr2)
592 592
{
593 593
    int slavio_serial_io_memory, i;
594 594
    SerialState *s;
......
704 704
    put_queue(s, 0);
705 705
}
706 706

  
707
void slavio_serial_ms_kbd_init(int base, qemu_irq irq)
707
void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq)
708 708
{
709 709
    int slavio_serial_io_memory, i;
710 710
    SerialState *s;
b/hw/slavio_timer.c
264 264
    slavio_timer_irq(s);
265 265
}
266 266

  
267
void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu,
268
                       void *intctl)
267
void slavio_timer_init(target_phys_addr_t addr, int irq, int mode,
268
                       unsigned int cpu, void *intctl)
269 269
{
270 270
    int slavio_timer_io_memory;
271 271
    SLAVIO_TIMERState *s;
b/hw/sparc32_dma.c
249 249
    return 0;
250 250
}
251 251

  
252
void *sparc32_dma_init(uint32_t daddr, qemu_irq espirq, qemu_irq leirq,
253
                       void *iommu)
252
void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq espirq,
253
                       qemu_irq leirq, void *iommu)
254 254
{
255 255
    DMAState *s;
256 256
    int dma_io_memory;
b/hw/sun4m.c
48 48
#define MAX_CPUS 16
49 49

  
50 50
struct hwdef {
51
    target_ulong iommu_base, slavio_base;
52
    target_ulong intctl_base, counter_base, nvram_base, ms_kb_base, serial_base;
53
    target_ulong fd_base;
54
    target_ulong dma_base, esp_base, le_base;
55
    target_ulong tcx_base, cs_base;
51
    target_phys_addr_t iommu_base, slavio_base;
52
    target_phys_addr_t intctl_base, counter_base, nvram_base, ms_kb_base;
53
    target_phys_addr_t serial_base, fd_base;
54
    target_phys_addr_t dma_base, esp_base, le_base;
55
    target_phys_addr_t tcx_base, cs_base, power_base;
56 56
    long vram_size, nvram_size;
57 57
    // IRQ numbers are not PIL ones, but master interrupt controller register
58 58
    // bit numbers
......
289 289

  
290 290
    iommu = iommu_init(hwdef->iommu_base);
291 291
    slavio_intctl = slavio_intctl_init(hwdef->intctl_base,
292
                                       hwdef->intctl_base + 0x10000,
292
                                       hwdef->intctl_base + 0x10000ULL,
293 293
                                       &hwdef->intbit_to_level[0],
294 294
                                       &slavio_irq);
295 295
    for(i = 0; i < smp_cpus; i++) {
......
317 317
    nvram = m48t59_init(slavio_irq[0], hwdef->nvram_base, 0,
318 318
                        hwdef->nvram_size, 8);
319 319
    for (i = 0; i < MAX_CPUS; i++) {
320
        slavio_timer_init(hwdef->counter_base + i * TARGET_PAGE_SIZE,
320
        slavio_timer_init(hwdef->counter_base +
321
                          (target_phys_addr_t)(i * TARGET_PAGE_SIZE),
321 322
                          hwdef->clock_irq, 0, i, slavio_intctl);
322 323
    }
323
    slavio_timer_init(hwdef->counter_base + 0x10000, hwdef->clock1_irq, 2,
324
    slavio_timer_init(hwdef->counter_base + 0x10000ULL, hwdef->clock1_irq, 2,
324 325
                      (unsigned int)-1, slavio_intctl);
325 326
    slavio_serial_ms_kbd_init(hwdef->ms_kb_base, slavio_irq[hwdef->ms_kb_irq]);
326 327
    // Slavio TTYA (base+4, Linux ttyS0) is the first Qemu serial device
......
336 337
        }
337 338
    }
338 339

  
339
    slavio_misc = slavio_misc_init(hwdef->slavio_base, 
340
    slavio_misc = slavio_misc_init(hwdef->slavio_base, hwdef->power_base,
340 341
                                   slavio_irq[hwdef->me_irq]);
341
    if (hwdef->cs_base != (target_ulong)-1)
342
    if (hwdef->cs_base != (target_phys_addr_t)-1)
342 343
        cs_init(hwdef->cs_base, hwdef->cs_irq, slavio_intctl);
343 344
    sparc32_dma_set_reset_data(dma, main_esp, main_lance);
344 345
}
......
424 425
        .dma_base     = 0x78400000,
425 426
        .esp_base     = 0x78800000,
426 427
        .le_base      = 0x78c00000,
428
        .power_base   = 0x7a000000,
427 429
        .vram_size    = 0x00100000,
428 430
        .nvram_size   = 0x2000,
429 431
        .esp_irq = 18,
......
443 445
    },
444 446
    /* SS-10 */
445 447
    {
446
        .iommu_base   = 0xe0000000, // XXX Actually at 0xfe0000000ULL (36 bits)
447
        .tcx_base     = 0x20000000, // 0xe20000000ULL,
448
        .iommu_base   = 0xfe0000000ULL,
449
        .tcx_base     = 0xe20000000ULL,
448 450
        .cs_base      = -1,
449
        .slavio_base  = 0xf0000000, // 0xff0000000ULL,
450
        .ms_kb_base   = 0xf1000000, // 0xff1000000ULL,
451
        .serial_base  = 0xf1100000, // 0xff1100000ULL,
452
        .nvram_base   = 0xf1200000, // 0xff1200000ULL,
453
        .fd_base      = 0xf1700000, // 0xff1700000ULL,
454
        .counter_base = 0xf1300000, // 0xff1300000ULL,
455
        .intctl_base  = 0xf1400000, // 0xff1400000ULL,
456
        .dma_base     = 0xf0400000, // 0xef0400000ULL,
457
        .esp_base     = 0xf0800000, // 0xef0800000ULL,
458
        .le_base      = 0xf0c00000, // 0xef0c00000ULL,
451
        .slavio_base  = 0xff0000000ULL,
452
        .ms_kb_base   = 0xff1000000ULL,
453
        .serial_base  = 0xff1100000ULL,
454
        .nvram_base   = 0xff1200000ULL,
455
        .fd_base      = 0xff1700000ULL,
456
        .counter_base = 0xff1300000ULL,
457
        .intctl_base  = 0xff1400000ULL,
458
        .dma_base     = 0xef0400000ULL,
459
        .esp_base     = 0xef0800000ULL,
460
        .le_base      = 0xef0c00000ULL,
461
        .power_base   = 0xefa000000ULL,
459 462
        .vram_size    = 0x00100000,
460 463
        .nvram_size   = 0x2000,
461 464
        .esp_irq = 18,
......
480 483
                              const char *initrd_filename, const char *cpu_model,
481 484
                              unsigned int machine, int max_ram)
482 485
{
483
    if (ram_size > max_ram) {
486
    if ((unsigned int)ram_size > (unsigned int)max_ram) {
484 487
        fprintf(stderr, "qemu: Too much memory for this machine: %d, maximum %d\n",
485
                ram_size / (1024 * 1024), max_ram / (1024 * 1024));
488
                (unsigned int)ram_size / (1024 * 1024),
489
                (unsigned int)max_ram / (1024 * 1024));
486 490
        exit(1);
487 491
    }
488 492
    sun4m_hw_init(&hwdefs[machine], ram_size, ds, cpu_model);
......
515 519
        cpu_model = "TI SuperSparc II";
516 520
    sun4m_common_init(ram_size, boot_device, ds, kernel_filename,
517 521
                      kernel_cmdline, initrd_filename, cpu_model,
518
                      1, 0x20000000); // XXX tcx overlap, actually first 4GB ok
522
                      1, PROM_ADDR); // XXX prom overlap, actually first 4GB ok
519 523
}
520 524

  
521 525
QEMUMachine ss5_machine = {
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);
b/target-sparc/cpu.h
290 290

  
291 291
int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
292 292
void raise_exception(int tt);
293
void do_unassigned_access(target_ulong addr, int is_write, int is_exec,
293
void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
294 294
                          int is_asi);
295 295

  
296 296
#include "cpu-all.h"
b/target-sparc/helper.c
117 117
    }
118 118

  
119 119
    *access_index = ((rw & 1) << 2) | (rw & 2) | (is_user? 0 : 1);
120
    *physical = 0xfffff000;
120
    *physical = 0xffffffffffff0000ULL;
121 121

  
122 122
    /* SPARC reference MMU table walk: Context table->L1->L2->PTE */
123 123
    /* Context base + context number */
......
203 203

  
204 204
    /* Even if large ptes, we map only one 4KB page in the cache to
205 205
       avoid filling it too fast */
206
    *physical = ((pde & PTE_ADDR_MASK) << 4) + page_offset;
206
    *physical = ((target_phys_addr_t)(pde & PTE_ADDR_MASK) << 4) + page_offset;
207 207
    return error_code;
208 208
}
209 209

  
......
212 212
                              int is_user, int is_softmmu)
213 213
{
214 214
    target_phys_addr_t paddr;
215
    unsigned long vaddr;
215
    target_ulong vaddr;
216 216
    int error_code = 0, prot, ret = 0, access_index;
217 217

  
218 218
    error_code = get_physical_address(env, &paddr, &prot, &access_index, address, rw, is_user);
......
220 220
	vaddr = address & TARGET_PAGE_MASK;
221 221
	paddr &= TARGET_PAGE_MASK;
222 222
#ifdef DEBUG_MMU
223
	printf("Translate at 0x%lx -> 0x%lx, vaddr 0x%lx\n", (long)address, (long)paddr, (long)vaddr);
223
	printf("Translate at " TARGET_FMT_lx " -> " TARGET_FMT_plx ", vaddr "
224
               TARGET_FMT_lx "\n", address, paddr, vaddr);
224 225
#endif
225 226
	ret = tlb_set_page_exec(env, vaddr, paddr, prot, is_user, is_softmmu);
226 227
	return ret;
......
255 256
    uint32_t pde;
256 257

  
257 258
    /* Context base + context number */
258
    pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2);
259
    pde_ptr = (target_phys_addr_t)(env->mmuregs[1] << 4) +
260
        (env->mmuregs[2] << 2);
259 261
    pde = ldl_phys(pde_ptr);
260 262

  
261 263
    switch (pde & PTE_ENTRYTYPE_MASK) {
......
314 316
#ifdef DEBUG_MMU
315 317
void dump_mmu(CPUState *env)
316 318
{
317
     target_ulong va, va1, va2;
318
     unsigned int n, m, o;
319
     target_phys_addr_t pde_ptr, pa;
319
    target_ulong va, va1, va2;
320
    unsigned int n, m, o;
321
    target_phys_addr_t pde_ptr, pa;
320 322
    uint32_t pde;
321 323

  
322 324
    printf("MMU dump:\n");
323 325
    pde_ptr = (env->mmuregs[1] << 4) + (env->mmuregs[2] << 2);
324 326
    pde = ldl_phys(pde_ptr);
325
    printf("Root ptr: " TARGET_FMT_lx ", ctx: %d\n", env->mmuregs[1] << 4, env->mmuregs[2]);
327
    printf("Root ptr: " TARGET_FMT_plx ", ctx: %d\n",
328
           (target_phys_addr_t)env->mmuregs[1] << 4, env->mmuregs[2]);
326 329
    for (n = 0, va = 0; n < 256; n++, va += 16 * 1024 * 1024) {
327
	pde_ptr = mmu_probe(env, va, 2);
328
	if (pde_ptr) {
330
	pde = mmu_probe(env, va, 2);
331
	if (pde) {
329 332
	    pa = cpu_get_phys_page_debug(env, va);
330
 	    printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PDE: " TARGET_FMT_lx "\n", va, pa, pde_ptr);
333
 	    printf("VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
334
                   " PDE: " TARGET_FMT_lx "\n", va, pa, pde);
331 335
	    for (m = 0, va1 = va; m < 64; m++, va1 += 256 * 1024) {
332
		pde_ptr = mmu_probe(env, va1, 1);
333
		if (pde_ptr) {
336
		pde = mmu_probe(env, va1, 1);
337
		if (pde) {
334 338
		    pa = cpu_get_phys_page_debug(env, va1);
335
 		    printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PDE: " TARGET_FMT_lx "\n", va1, pa, pde_ptr);
339
 		    printf(" VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_plx
340
                           " PDE: " TARGET_FMT_lx "\n", va1, pa, pde);
336 341
		    for (o = 0, va2 = va1; o < 64; o++, va2 += 4 * 1024) {
337
			pde_ptr = mmu_probe(env, va2, 0);
338
			if (pde_ptr) {
342
			pde = mmu_probe(env, va2, 0);
343
			if (pde) {
339 344
			    pa = cpu_get_phys_page_debug(env, va2);
340
 			    printf("  VA: " TARGET_FMT_lx ", PA: " TARGET_FMT_lx " PTE: " TARGET_FMT_lx "\n", va2, pa, pde_ptr);
345
 			    printf("  VA: " TARGET_FMT_lx ", PA: "
346
                                   TARGET_FMT_plx " PTE: " TARGET_FMT_lx "\n",
347
                                   va2, pa, pde);
341 348
			}
342 349
		    }
343 350
		}
b/target-sparc/op_helper.c
223 223
	    break;
224 224
        }
225 225
	break;
226
    case 0x21 ... 0x2f: /* MMU passthrough, unassigned */
226
    case 0x2e: /* MMU passthrough, 0xexxxxxxxx */
227
    case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */
228
        switch(size) {
229
        case 1:
230
            ret = ldub_phys((target_phys_addr_t)T0
231
                            | ((target_phys_addr_t)(asi & 0xf) << 32));
232
            break;
233
        case 2:
234
            ret = lduw_phys((target_phys_addr_t)(T0 & ~1)
235
                            | ((target_phys_addr_t)(asi & 0xf) << 32));
236
            break;
237
        default:
238
        case 4:
239
            ret = ldl_phys((target_phys_addr_t)(T0 & ~3)
240
                           | ((target_phys_addr_t)(asi & 0xf) << 32));
241
            break;
242
        case 8:
243
            ret = ldl_phys((target_phys_addr_t)(T0 & ~3)
244
                           | ((target_phys_addr_t)(asi & 0xf) << 32));
245
            T0 = ldl_phys((target_phys_addr_t)((T0 + 4) & ~3)
246
                           | ((target_phys_addr_t)(asi & 0xf) << 32));
247
	    break;
248
        }
249
	break;
250
    case 0x21 ... 0x2d: /* MMU passthrough, unassigned */
227 251
    default:
228 252
        do_unassigned_access(T0, 0, 0, 1);
229 253
	ret = 0;
......
360 384
            }
361 385
	}
362 386
	return;
387
    case 0x2e: /* MMU passthrough, 0xexxxxxxxx */
388
    case 0x2f: /* MMU passthrough, 0xfxxxxxxxx */
389
	{
390
            switch(size) {
391
            case 1:
392
                stb_phys((target_phys_addr_t)T0
393
                         | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
394
                break;
395
            case 2:
396
                stw_phys((target_phys_addr_t)(T0 & ~1)
397
                            | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
398
                break;
399
            case 4:
400
            default:
401
                stl_phys((target_phys_addr_t)(T0 & ~3)
402
                           | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
403
                break;
404
            case 8:
405
                stl_phys((target_phys_addr_t)(T0 & ~3)
406
                           | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
407
                stl_phys((target_phys_addr_t)((T0 + 4) & ~3)
408
                           | ((target_phys_addr_t)(asi & 0xf) << 32), T1);
409
                break;
410
            }
411
	}
412
	return;
363 413
    case 0x31: /* Ross RT620 I-cache flush */
364 414
    case 0x36: /* I-cache flash clear */
365 415
    case 0x37: /* D-cache flash clear */
366 416
        break;
367 417
    case 9: /* Supervisor code access, XXX */
368
    case 0x21 ... 0x2f: /* MMU passthrough, unassigned */
418
    case 0x21 ... 0x2d: /* MMU passthrough, unassigned */
369 419
    default:
370 420
        do_unassigned_access(T0, 1, 0, 1);
371 421
	return;
......
1035 1085
#endif
1036 1086

  
1037 1087
#ifndef TARGET_SPARC64
1038
void do_unassigned_access(target_ulong addr, int is_write, int is_exec,
1088
void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
1039 1089
                          int is_asi)
1040 1090
{
1041 1091
    CPUState *saved_env;
......
1058 1108
    env->mmuregs[4] = addr; /* Fault address register */
1059 1109
    if ((env->mmuregs[0] & MMU_E) && !(env->mmuregs[0] & MMU_NF)) {
1060 1110
#ifdef DEBUG_UNASSIGNED
1061
        printf("Unassigned mem access to " TARGET_FMT_lx " from " TARGET_FMT_lx
1111
        printf("Unassigned mem access to " TARGET_FMT_plx " from " TARGET_FMT_lx
1062 1112
               "\n", addr, env->pc);
1063 1113
#endif
1064 1114
        raise_exception(TT_DATA_ACCESS);
......
1066 1116
    env = saved_env;
1067 1117
}
1068 1118
#else
1069
void do_unassigned_access(target_ulong addr, int is_write, int is_exec,
1119
void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
1070 1120
                          int is_asi)
1071 1121
{
1072 1122
#ifdef DEBUG_UNASSIGNED
......
1076 1126
       generated code */
1077 1127
    saved_env = env;
1078 1128
    env = cpu_single_env;
1079
    printf("Unassigned mem access to " TARGET_FMT_lx " from " TARGET_FMT_lx "\n",
1129
    printf("Unassigned mem access to " TARGET_FMT_plx " from " TARGET_FMT_lx "\n",
1080 1130
           addr, env->pc);
1081 1131
    env = saved_env;
1082 1132
#endif
b/vl.h
1024 1024
typedef struct fdctrl_t fdctrl_t;
1025 1025

  
1026 1026
fdctrl_t *fdctrl_init (qemu_irq irq, int dma_chann, int mem_mapped, 
1027
                       uint32_t io_base,
1027
                       target_phys_addr_t io_base,
1028 1028
                       BlockDriverState **fds);
1029 1029
int fdctrl_get_drive_type(fdctrl_t *fdctrl, int drive_num);
1030 1030

  
......
1047 1047

  
1048 1048
void pci_pcnet_init(PCIBus *bus, NICInfo *nd, int devfn);
1049 1049
void pcnet_h_reset(void *opaque);
1050
void *lance_init(NICInfo *nd, uint32_t leaddr, void *dma_opaque, qemu_irq irq);
1050
void *lance_init(NICInfo *nd, target_phys_addr_t leaddr, void *dma_opaque,
1051
                 qemu_irq irq);
1051 1052

  
1052 1053
/* vmmouse.c */
1053 1054
void *vmmouse_init(void *m);
......
1208 1209
extern QEMUMachine ss5_machine, ss10_machine;
1209 1210

  
1210 1211
/* iommu.c */
1211
void *iommu_init(uint32_t addr);
1212
void *iommu_init(target_phys_addr_t addr);
1212 1213
void sparc_iommu_memory_rw(void *opaque, target_phys_addr_t addr,
1213 1214
                                 uint8_t *buf, int len, int is_write);
1214 1215
static inline void sparc_iommu_memory_read(void *opaque,
......
1226 1227
}
1227 1228

  
1228 1229
/* tcx.c */
1229
void tcx_init(DisplayState *ds, uint32_t addr, uint8_t *vram_base,
1230
	      unsigned long vram_offset, int vram_size, int width, int height,
1230
void tcx_init(DisplayState *ds, target_phys_addr_t addr, uint8_t *vram_base,
1231
              unsigned long vram_offset, int vram_size, int width, int height,
1231 1232
              int depth);
1232 1233

  
1233 1234
/* slavio_intctl.c */
1234 1235
void pic_set_irq_cpu(void *opaque, int irq, int level, unsigned int cpu);
1235
void *slavio_intctl_init(uint32_t addr, uint32_t addrg,
1236
void *slavio_intctl_init(target_phys_addr_t addr, target_phys_addr_t addrg,
1236 1237
                         const uint32_t *intbit_to_level,
1237 1238
                         qemu_irq **irq);
1238 1239
void slavio_intctl_set_cpu(void *opaque, unsigned int cpu, CPUState *env);
......
1248 1249
int load_uboot(const char *filename, target_ulong *ep, int *is_linux);
1249 1250

  
1250 1251
/* slavio_timer.c */
1251
void slavio_timer_init(uint32_t addr, int irq, int mode, unsigned int cpu,
1252
                       void *intctl);
1252
void slavio_timer_init(target_phys_addr_t addr, int irq, int mode,
1253
                       unsigned int cpu, void *intctl);
1253 1254

  
1254 1255
/* slavio_serial.c */
1255
SerialState *slavio_serial_init(int base, qemu_irq irq, CharDriverState *chr1,
1256
                                CharDriverState *chr2);
1257
void slavio_serial_ms_kbd_init(int base, qemu_irq);
1256
SerialState *slavio_serial_init(target_phys_addr_t base, qemu_irq irq,
1257
                                CharDriverState *chr1, CharDriverState *chr2);
1258
void slavio_serial_ms_kbd_init(target_phys_addr_t base, qemu_irq irq);
1258 1259

  
1259 1260
/* slavio_misc.c */
1260
void *slavio_misc_init(uint32_t base, qemu_irq irq);
1261
void *slavio_misc_init(target_phys_addr_t base, target_phys_addr_t power_base,
1262
                       qemu_irq irq);
1261 1263
void slavio_set_power_fail(void *opaque, int power_failing);
1262 1264

  
1263 1265
/* esp.c */
1264 1266
void esp_scsi_attach(void *opaque, BlockDriverState *bd, int id);
1265
void *esp_init(BlockDriverState **bd, uint32_t espaddr, void *dma_opaque);
1267
void *esp_init(BlockDriverState **bd, target_phys_addr_t espaddr,
1268
               void *dma_opaque);
1266 1269
void esp_reset(void *opaque);
1267 1270

  
1268 1271
/* sparc32_dma.c */
1269
void *sparc32_dma_init(uint32_t daddr, qemu_irq espirq, qemu_irq leirq,
1270
                       void *iommu);
1272
void *sparc32_dma_init(target_phys_addr_t daddr, qemu_irq espirq,
1273
                       qemu_irq leirq, void *iommu);
1271 1274
void ledma_set_irq(void *opaque, int isr);
1272 1275
void ledma_memory_read(void *opaque, target_phys_addr_t addr, 
1273 1276
                       uint8_t *buf, int len, int do_bswap);

Also available in: Unified diff