126,143c126,128
< unsigned flags = 0;
< switch(dataSize)
< {
< case 1:
< fault = xc->read(EA, (uint8_t&)Mem, flags);
< break;
< case 2:
< fault = xc->read(EA, (uint16_t&)Mem, flags);
< break;
< case 4:
< fault = xc->read(EA, (uint32_t&)Mem, flags);
< break;
< case 8:
< fault = xc->read(EA, (uint64_t&)Mem, flags);
< break;
< default:
< panic("Bad operand size!\n");
< }
---
> fault = read(xc, EA, Mem, 0);
> int offset = EA & (dataSize - 1);
> Mem = bits(Mem, (offset + dataSize) * 8 - 1, offset * 8);
170,187c155,156
< unsigned flags = 0;
< switch(dataSize)
< {
< case 1:
< fault = xc->read(EA, (uint8_t&)Mem, flags);
< break;
< case 2:
< fault = xc->read(EA, (uint16_t&)Mem, flags);
< break;
< case 4:
< fault = xc->read(EA, (uint32_t&)Mem, flags);
< break;
< case 8:
< fault = xc->read(EA, (uint64_t&)Mem, flags);
< break;
< default:
< panic("Bad operand size!\n");
< }
---
> int offset = EA & (dataSize - 1);
> fault = read(xc, EA, Mem, offset);
203a173,174
> int offset = pkt->flags;
> Mem = bits(Mem, (offset + dataSize) * 8 - 1, offset * 8);
233,235c204,206
< unsigned flags = 0;
< uint64_t *res = 0;
< switch(dataSize)
---
> Mem = Mem << ((EA & (dataSize - 1)) * 8);
> fault = write(xc, Mem, EA, 0);
> if(fault == NoFault)
237,250c208
< case 1:
< fault = xc->write((uint8_t&)Mem, EA, flags, res);
< break;
< case 2:
< fault = xc->write((uint16_t&)Mem, EA, flags, res);
< break;
< case 4:
< fault = xc->write((uint32_t&)Mem, EA, flags, res);
< break;
< case 8:
< fault = xc->write((uint64_t&)Mem, EA, flags, res);
< break;
< default:
< panic("Bad operand size!\n");
---
> %(op_wb)s;
253,256d210
< if(fault == NoFault)
< {
< %(op_wb)s;
< }
278,280c232,234
< unsigned flags = 0;
< uint64_t *res = 0;
< switch(dataSize)
---
> Mem = Mem << ((EA & (dataSize - 1)) * 8);
> fault = write(xc, Mem, EA, 0);
> if(fault == NoFault)
282,295c236
< case 1:
< fault = xc->write((uint8_t&)Mem, EA, flags, res);
< break;
< case 2:
< fault = xc->write((uint16_t&)Mem, EA, flags, res);
< break;
< case 4:
< fault = xc->write((uint32_t&)Mem, EA, flags, res);
< break;
< case 8:
< fault = xc->write((uint64_t&)Mem, EA, flags, res);
< break;
< default:
< panic("Bad operand size!\n");
---
> %(op_wb)s;
298,301d238
< if(fault == NoFault)
< {
< %(op_wb)s;
< }