Revision 5f9a5ea1

b/hw/block/pflash_cfi01.c
105 105
    DPRINTF("%s: command %02x done\n", __func__, pfl->cmd);
106 106
    /* Reset flash */
107 107
    pfl->status ^= 0x80;
108
    memory_region_rom_device_set_readable(&pfl->mem, true);
108
    memory_region_rom_device_set_romd(&pfl->mem, true);
109 109
    pfl->wcycle = 0;
110 110
    pfl->cmd = 0;
111 111
}
......
281 281

  
282 282
    if (!pfl->wcycle) {
283 283
        /* Set the device in I/O access mode */
284
        memory_region_rom_device_set_readable(&pfl->mem, false);
284
        memory_region_rom_device_set_romd(&pfl->mem, false);
285 285
    }
286 286

  
287 287
    switch (pfl->wcycle) {
......
458 458
                  "\n", __func__, offset, pfl->wcycle, pfl->cmd, value);
459 459

  
460 460
 reset_flash:
461
    memory_region_rom_device_set_readable(&pfl->mem, true);
461
    memory_region_rom_device_set_romd(&pfl->mem, true);
462 462

  
463 463
    pfl->wcycle = 0;
464 464
    pfl->cmd = 0;
b/hw/block/pflash_cfi02.c
111 111

  
112 112
static void pflash_register_memory(pflash_t *pfl, int rom_mode)
113 113
{
114
    memory_region_rom_device_set_readable(&pfl->orig_mem, rom_mode);
114
    memory_region_rom_device_set_romd(&pfl->orig_mem, rom_mode);
115 115
    pfl->rom_mode = rom_mode;
116 116
}
117 117

  
b/include/exec/memory.h
126 126
    ram_addr_t ram_addr;
127 127
    bool subpage;
128 128
    bool terminates;
129
    bool readable;
129
    bool romd_mode;
130 130
    bool ram;
131 131
    bool readonly; /* For RAM regions */
132 132
    bool enabled;
......
355 355
bool memory_region_is_ram(MemoryRegion *mr);
356 356

  
357 357
/**
358
 * memory_region_is_romd: check whether a memory region is ROMD
358
 * memory_region_is_romd: check whether a memory region is in ROMD mode
359 359
 *
360
 * Returns %true is a memory region is ROMD and currently set to allow
360
 * Returns %true if a memory region is a ROM device and currently set to allow
361 361
 * direct reads.
362 362
 *
363 363
 * @mr: the memory region being queried
364 364
 */
365 365
static inline bool memory_region_is_romd(MemoryRegion *mr)
366 366
{
367
    return mr->rom_device && mr->readable;
367
    return mr->rom_device && mr->romd_mode;
368 368
}
369 369

  
370 370
/**
......
502 502
void memory_region_set_readonly(MemoryRegion *mr, bool readonly);
503 503

  
504 504
/**
505
 * memory_region_rom_device_set_readable: enable/disable ROM readability
505
 * memory_region_rom_device_set_romd: enable/disable ROMD mode
506 506
 *
507 507
 * Allows a ROM device (initialized with memory_region_init_rom_device() to
508
 * to be marked as readable (default) or not readable.  When it is readable,
509
 * the device is mapped to guest memory.  When not readable, reads are
510
 * forwarded to the #MemoryRegion.read function.
508
 * set to ROMD mode (default) or MMIO mode.  When it is in ROMD mode, the
509
 * device is mapped to guest memory and satisfies read access directly.
510
 * When in MMIO mode, reads are forwarded to the #MemoryRegion.read function.
511
 * Writes are always handled by the #MemoryRegion.write function.
511 512
 *
512 513
 * @mr: the memory region to be updated
513
 * @readable: whether reads are satisified directly (%true) or via callbacks
514
 *            (%false)
514
 * @romd_mode: %true to put the region into ROMD mode
515 515
 */
516
void memory_region_rom_device_set_readable(MemoryRegion *mr, bool readable);
516
void memory_region_rom_device_set_romd(MemoryRegion *mr, bool romd_mode);
517 517

  
518 518
/**
519 519
 * memory_region_set_coalescing: Enable memory coalescing for the region.
b/memory.c
213 213
    hwaddr offset_in_region;
214 214
    AddrRange addr;
215 215
    uint8_t dirty_log_mask;
216
    bool readable;
216
    bool romd_mode;
217 217
    bool readonly;
218 218
};
219 219

  
......
236 236
    return a->mr == b->mr
237 237
        && addrrange_equal(a->addr, b->addr)
238 238
        && a->offset_in_region == b->offset_in_region
239
        && a->readable == b->readable
239
        && a->romd_mode == b->romd_mode
240 240
        && a->readonly == b->readonly;
241 241
}
242 242

  
......
276 276
                                r1->addr.size),
277 277
                     int128_make64(r2->offset_in_region))
278 278
        && r1->dirty_log_mask == r2->dirty_log_mask
279
        && r1->readable == r2->readable
279
        && r1->romd_mode == r2->romd_mode
280 280
        && r1->readonly == r2->readonly;
281 281
}
282 282

  
......
532 532
            fr.offset_in_region = offset_in_region;
533 533
            fr.addr = addrrange_make(base, now);
534 534
            fr.dirty_log_mask = mr->dirty_log_mask;
535
            fr.readable = mr->readable;
535
            fr.romd_mode = mr->romd_mode;
536 536
            fr.readonly = readonly;
537 537
            flatview_insert(view, i, &fr);
538 538
            ++i;
......
552 552
        fr.offset_in_region = offset_in_region;
553 553
        fr.addr = addrrange_make(base, remain);
554 554
        fr.dirty_log_mask = mr->dirty_log_mask;
555
        fr.readable = mr->readable;
555
        fr.romd_mode = mr->romd_mode;
556 556
        fr.readonly = readonly;
557 557
        flatview_insert(view, i, &fr);
558 558
    }
......
801 801
    mr->enabled = true;
802 802
    mr->terminates = false;
803 803
    mr->ram = false;
804
    mr->readable = true;
804
    mr->romd_mode = true;
805 805
    mr->readonly = false;
806 806
    mr->rom_device = false;
807 807
    mr->destructor = memory_region_destructor_none;
......
1121 1121
    }
1122 1122
}
1123 1123

  
1124
void memory_region_rom_device_set_readable(MemoryRegion *mr, bool readable)
1124
void memory_region_rom_device_set_romd(MemoryRegion *mr, bool romd_mode)
1125 1125
{
1126
    if (mr->readable != readable) {
1126
    if (mr->romd_mode != romd_mode) {
1127 1127
        memory_region_transaction_begin();
1128
        mr->readable = readable;
1128
        mr->romd_mode = romd_mode;
1129 1129
        memory_region_update_pending |= mr->enabled;
1130 1130
        memory_region_transaction_commit();
1131 1131
    }
......
1659 1659
                   base + mr->addr
1660 1660
                   + (hwaddr)int128_get64(mr->size) - 1,
1661 1661
                   mr->priority,
1662
                   mr->readable ? 'R' : '-',
1663
                   !mr->readonly && !(mr->rom_device && mr->readable) ? 'W'
1664
                                                                      : '-',
1662
                   mr->romd_mode ? 'R' : '-',
1663
                   !mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
1664
                                                                       : '-',
1665 1665
                   mr->name,
1666 1666
                   mr->alias->name,
1667 1667
                   mr->alias_offset,
......
1674 1674
                   base + mr->addr
1675 1675
                   + (hwaddr)int128_get64(mr->size) - 1,
1676 1676
                   mr->priority,
1677
                   mr->readable ? 'R' : '-',
1678
                   !mr->readonly && !(mr->rom_device && mr->readable) ? 'W'
1679
                                                                      : '-',
1677
                   mr->romd_mode ? 'R' : '-',
1678
                   !mr->readonly && !(mr->rom_device && mr->romd_mode) ? 'W'
1679
                                                                       : '-',
1680 1680
                   mr->name);
1681 1681
    }
1682 1682

  

Also available in: Unified diff