Memory interface is now MMIO-capable

This commit is contained in:
2023-10-11 21:30:46 +02:00
parent d7e684ad91
commit 58b4bdb1e6
5 changed files with 242 additions and 56 deletions
+2 -15
View File
@@ -2,7 +2,6 @@
#include "cpu/rv32cpu.h"
#include "memory/memory.h"
#include "memory/mmu/mmu.h"
#include <errno.h>
#include <stdlib.h>
@@ -259,19 +258,13 @@ void gdbstub_thread_gdb()
uint32_t length;
sscanf(packet + 1, "%x,%x", &address, &length);
// Aquire memory mutex
pthread_mutex_lock(&memory_mutex);
char data[length * 2 + 1];
for(size_t i = 0; i < length; i++)
{
uint32_t value = memory[mmu_translate(address + i)];
uint32_t value = mem_read32(address + i);
snprintf(data + i * 2, 3, "%02x", value);
}
// Let go of memory mutex
pthread_mutex_unlock(&memory_mutex);
gdbstub_send_packet(data, length * 2);
}
else if(packet[0] == 'M')
@@ -286,19 +279,13 @@ void gdbstub_thread_gdb()
data_start++;
data_start++;
// Aquire memory mutex
pthread_mutex_lock(&memory_mutex);
for(size_t i = 0; i < length; i++)
{
uint32_t value;
sscanf(packet + data_start + i * 2, "%02x", &value);
memory[mmu_translate(address + i)] = value;
mem_write32(address + i, value);
}
// Let go of memory mutex
pthread_mutex_unlock(&memory_mutex);
gdbstub_send_packet("OK", 2);
}
else if(packet[0] == 's')