Line 527... |
Line 527... |
cur_area->writefunc(memaddr, value & 0xFFFF);
|
cur_area->writefunc(memaddr, value & 0xFFFF);
|
mem_cycles += cur_area->delayw;
|
mem_cycles += cur_area->delayw;
|
break;
|
break;
|
case 4:
|
case 4:
|
temp = evalsim_mem32 (memaddr & ~3ul);
|
temp = evalsim_mem32 (memaddr & ~3ul);
|
temp &= 0xffff << ((memaddr & 2) ? 0 : 16);
|
temp &= 0xffff << ((memaddr & 2) ? 16 : 0);
|
temp |= (unsigned long)(value & 0xffff) << ((memaddr & 2) ? 16 : 0);
|
temp |= (unsigned long)(value & 0xffff) << ((memaddr & 2) ? 0 : 16);
|
setsim_mem32 (memaddr & ~3ul, temp);
|
setsim_mem32 (memaddr & ~3ul, temp);
|
break;
|
break;
|
}
|
}
|
} else {
|
} else {
|
printf("EXCEPTION: write out of memory (16-bit access to %.8lx)\n", memaddr);
|
printf("EXCEPTION: write out of memory (16-bit access to %.8lx)\n", memaddr);
|
Line 570... |
Line 570... |
cur_area->writefunc(memaddr, value);
|
cur_area->writefunc(memaddr, value);
|
mem_cycles += cur_area->delayw;
|
mem_cycles += cur_area->delayw;
|
break;
|
break;
|
case 2:
|
case 2:
|
temp = evalsim_mem16 (memaddr & ~1ul);
|
temp = evalsim_mem16 (memaddr & ~1ul);
|
temp &= 0xff << ((memaddr & 1) ? 0 : 8);
|
temp &= 0xff << ((memaddr & 1) ? 8 : 0);
|
temp |= (unsigned short)(value & 0xff) << ((memaddr & 1) ? 8 : 0);
|
temp |= (unsigned short)(value & 0xff) << ((memaddr & 1) ? 0 : 8);
|
setsim_mem16 (memaddr & ~1ul, temp);
|
setsim_mem16 (memaddr & ~1ul, temp);
|
break;
|
break;
|
case 4:
|
case 4:
|
temp = evalsim_mem32 (memaddr & ~3ul);
|
temp = evalsim_mem32 (memaddr & ~3ul);
|
temp &= ~(0xff << (8 * (3 - (memaddr & 3))));
|
temp &= ~(0xff << (8 * (3 - (memaddr & 3))));
|