trunk/src/mame/drivers/viper.cpp
r253005 | r253006 | |
462 | 462 | |
463 | 463 | static inline UINT64 read64be_with_32le_device_handler(read32_delegate handler, address_space &space, offs_t offset, UINT64 mem_mask) |
464 | 464 | { |
465 | | UINT64 result; |
466 | 465 | mem_mask = FLIPENDIAN_INT64(mem_mask); |
467 | | result = read64le_with_32le_device_handler(handler, space, offset, mem_mask); |
| 466 | UINT64 result = 0; |
| 467 | if (ACCESSING_BITS_0_31) |
| 468 | result = (UINT64)(handler)(space, offset * 2, mem_mask & 0xffffffff); |
| 469 | if (ACCESSING_BITS_32_63) |
| 470 | result |= (UINT64)(handler)(space, offset * 2 + 1, mem_mask >> 32) << 32; |
468 | 471 | return FLIPENDIAN_INT64(result); |
469 | 472 | } |
470 | 473 | |
r253005 | r253006 | |
473 | 476 | { |
474 | 477 | data = FLIPENDIAN_INT64(data); |
475 | 478 | mem_mask = FLIPENDIAN_INT64(mem_mask); |
476 | | write64le_with_32le_device_handler(handler, space, offset, data, mem_mask); |
| 479 | if (ACCESSING_BITS_0_31) |
| 480 | handler(space, offset * 2, data & 0xffffffff, mem_mask & 0xffffffff); |
| 481 | if (ACCESSING_BITS_32_63) |
| 482 | handler(space, offset * 2 + 1, data >> 32, mem_mask >> 32); |
477 | 483 | } |
478 | 484 | |
479 | 485 | /*****************************************************************************/ |