- switch (sbcs.sbaccess) {
- case 0:
- sim->debug_mmu->store_uint8(address, sbdata[0]);
- break;
- case 1:
- sim->debug_mmu->store_uint16(address, sbdata[0]);
- break;
- case 2:
- sim->debug_mmu->store_uint32(address, sbdata[0]);
- break;
- case 3:
- sim->debug_mmu->store_uint64(address,
- (((uint64_t) sbdata[1]) << 32) | sbdata[0]);
- break;
- default:
- sbcs.error = 3;
- break;
+ if (sbcs.sbaccess == 0 && max_bus_master_bits >= 8) {
+ sim->debug_mmu->store_uint8(address, sbdata[0]);
+ } else if (sbcs.sbaccess == 1 && max_bus_master_bits >= 16) {
+ sim->debug_mmu->store_uint16(address, sbdata[0]);
+ } else if (sbcs.sbaccess == 2 && max_bus_master_bits >= 32) {
+ sim->debug_mmu->store_uint32(address, sbdata[0]);
+ } else if (sbcs.sbaccess == 3 && max_bus_master_bits >= 64) {
+ sim->debug_mmu->store_uint64(address,
+ (((uint64_t) sbdata[1]) << 32) | sbdata[0]);
+ } else {
+ sbcs.error = 3;