Revision d6a6d362

b/hw/ac97.c
1226 1226
    }
1227 1227
};
1228 1228

  
1229
static const MemoryRegionPortio nam_portio[] = {
1230
    { 0, 256 * 1, 1, .read = nam_readb, },
1231
    { 0, 256 * 2, 2, .read = nam_readw, },
1232
    { 0, 256 * 4, 4, .read = nam_readl, },
1233
    { 0, 256 * 1, 1, .write = nam_writeb, },
1234
    { 0, 256 * 2, 2, .write = nam_writew, },
1235
    { 0, 256 * 4, 4, .write = nam_writel, },
1236
    PORTIO_END_OF_LIST (),
1237
};
1229
static uint64_t nam_read(void *opaque, hwaddr addr, unsigned size)
1230
{
1231
    if ((addr / size) > 256) {
1232
        return -1;
1233
    }
1234

  
1235
    switch (size) {
1236
    case 1:
1237
        return nam_readb(opaque, addr);
1238
    case 2:
1239
        return nam_readw(opaque, addr);
1240
    case 4:
1241
        return nam_readl(opaque, addr);
1242
    default:
1243
        return -1;
1244
    }
1245
}
1246

  
1247
static void nam_write(void *opaque, hwaddr addr, uint64_t val,
1248
                      unsigned size)
1249
{
1250
    if ((addr / size) > 256) {
1251
        return;
1252
    }
1253

  
1254
    switch (size) {
1255
    case 1:
1256
        nam_writeb(opaque, addr, val);
1257
        break;
1258
    case 2:
1259
        nam_writew(opaque, addr, val);
1260
        break;
1261
    case 4:
1262
        nam_writel(opaque, addr, val);
1263
        break;
1264
    }
1265
}
1238 1266

  
1239 1267
static const MemoryRegionOps ac97_io_nam_ops = {
1240
    .old_portio = nam_portio,
1268
    .read = nam_read,
1269
    .write = nam_write,
1270
    .impl = {
1271
        .min_access_size = 1,
1272
        .max_access_size = 4,
1273
    },
1274
    .endianness = DEVICE_LITTLE_ENDIAN,
1241 1275
};
1242 1276

  
1243
static const MemoryRegionPortio nabm_portio[] = {
1244
    { 0, 64 * 1, 1, .read = nabm_readb, },
1245
    { 0, 64 * 2, 2, .read = nabm_readw, },
1246
    { 0, 64 * 4, 4, .read = nabm_readl, },
1247
    { 0, 64 * 1, 1, .write = nabm_writeb, },
1248
    { 0, 64 * 2, 2, .write = nabm_writew, },
1249
    { 0, 64 * 4, 4, .write = nabm_writel, },
1250
    PORTIO_END_OF_LIST ()
1251
};
1277
static uint64_t nabm_read(void *opaque, hwaddr addr, unsigned size)
1278
{
1279
    if ((addr / size) > 64) {
1280
        return -1;
1281
    }
1282

  
1283
    switch (size) {
1284
    case 1:
1285
        return nabm_readb(opaque, addr);
1286
    case 2:
1287
        return nabm_readw(opaque, addr);
1288
    case 4:
1289
        return nabm_readl(opaque, addr);
1290
    default:
1291
        return -1;
1292
    }
1293
}
1294

  
1295
static void nabm_write(void *opaque, hwaddr addr, uint64_t val,
1296
                      unsigned size)
1297
{
1298
    if ((addr / size) > 64) {
1299
        return;
1300
    }
1301

  
1302
    switch (size) {
1303
    case 1:
1304
        nabm_writeb(opaque, addr, val);
1305
        break;
1306
    case 2:
1307
        nabm_writew(opaque, addr, val);
1308
        break;
1309
    case 4:
1310
        nabm_writel(opaque, addr, val);
1311
        break;
1312
    }
1313
}
1314

  
1252 1315

  
1253 1316
static const MemoryRegionOps ac97_io_nabm_ops = {
1254
    .old_portio = nabm_portio,
1317
    .read = nabm_read,
1318
    .write = nabm_write,
1319
    .impl = {
1320
        .min_access_size = 1,
1321
        .max_access_size = 4,
1322
    },
1323
    .endianness = DEVICE_LITTLE_ENDIAN,
1255 1324
};
1256 1325

  
1257 1326
static void ac97_on_reset (void *opaque)

Also available in: Unified diff