Clear RAM to zero on reset.

This commit is contained in:
Florian Nücke
2020-09-16 11:59:05 +02:00
parent 528d7246d3
commit a17c492faa

View File

@@ -5,6 +5,7 @@ import li.cil.circuity.api.vm.device.Steppable;
import li.cil.circuity.api.vm.device.memory.MemoryAccessException;
import li.cil.circuity.api.vm.device.memory.MemoryMappedDevice;
import li.cil.circuity.api.vm.device.memory.PhysicalMemory;
import li.cil.circuity.api.vm.device.memory.Sizes;
import li.cil.circuity.api.vm.device.rtc.RealTimeCounter;
import li.cil.circuity.api.vm.devicetree.DeviceNames;
import li.cil.circuity.api.vm.devicetree.DeviceTree;
@@ -144,6 +145,14 @@ public final class R5Board {
cpu.reset(true);
try {
for (final MemoryMappedDevice device : devices) {
if (device instanceof PhysicalMemory) {
for (int offset = 0; offset < device.getLength(); offset += 4) {
device.store(offset, 0, Sizes.SIZE_32_LOG2);
}
}
}
final FlattenedDeviceTree fdt = buildDeviceTree().flatten();
final byte[] dtb = fdt.toDTB();
for (int i = 0; i < dtb.length; i++) {