aboutsummaryrefslogtreecommitdiff
path: root/hw/xtensa/sim.c
diff options
context:
space:
mode:
authorMax Filippov <jcmvbkbc@gmail.com>2017-12-22 13:53:36 -0800
committerMax Filippov <jcmvbkbc@gmail.com>2018-01-11 09:31:26 -0800
commite53fa62c17a87c8a6cdbe5fb265c876bb87bcff2 (patch)
tree6e236f7d272a5912bc89ef79043e28912995b042 /hw/xtensa/sim.c
parent29b39bc712b55ea535bf419821d797c5ba614146 (diff)
downloadqemu-e53fa62c17a87c8a6cdbe5fb265c876bb87bcff2.zip
qemu-e53fa62c17a87c8a6cdbe5fb265c876bb87bcff2.tar.gz
qemu-e53fa62c17a87c8a6cdbe5fb265c876bb87bcff2.tar.bz2
hw/xtensa: extract xtensa_create_memory_regions
XTFPGA boards should populate core memory regions the same way sim machine does. Move xtensa_create_memory_regions implementation to a separate file and use it to create instruction and data memory regions on XTFPGA boards. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Diffstat (limited to 'hw/xtensa/sim.c')
-rw-r--r--hw/xtensa/sim.c38
1 files changed, 13 insertions, 25 deletions
diff --git a/hw/xtensa/sim.c b/hw/xtensa/sim.c
index 2bb883b..5c0ba23 100644
--- a/hw/xtensa/sim.c
+++ b/hw/xtensa/sim.c
@@ -36,25 +36,7 @@
#include "exec/memory.h"
#include "exec/address-spaces.h"
#include "qemu/error-report.h"
-
-static void xtensa_create_memory_regions(const XtensaMemory *memory,
- const char *name)
-{
- unsigned i;
- GString *num_name = g_string_new(NULL);
-
- for (i = 0; i < memory->num; ++i) {
- MemoryRegion *m;
-
- g_string_printf(num_name, "%s%u", name, i);
- m = g_new(MemoryRegion, 1);
- memory_region_init_ram(m, NULL, num_name->str,
- memory->location[i].size, &error_fatal);
- memory_region_add_subregion(get_system_memory(),
- memory->location[i].addr, m);
- }
- g_string_free(num_name, true);
-}
+#include "xtensa_memory.h"
static uint64_t translate_phys_addr(void *opaque, uint64_t addr)
{
@@ -94,12 +76,18 @@ static void xtensa_sim_init(MachineState *machine)
XtensaMemory sysram = env->config->sysram;
sysram.location[0].size = ram_size;
- xtensa_create_memory_regions(&env->config->instrom, "xtensa.instrom");
- xtensa_create_memory_regions(&env->config->instram, "xtensa.instram");
- xtensa_create_memory_regions(&env->config->datarom, "xtensa.datarom");
- xtensa_create_memory_regions(&env->config->dataram, "xtensa.dataram");
- xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom");
- xtensa_create_memory_regions(&sysram, "xtensa.sysram");
+ xtensa_create_memory_regions(&env->config->instrom, "xtensa.instrom",
+ get_system_memory());
+ xtensa_create_memory_regions(&env->config->instram, "xtensa.instram",
+ get_system_memory());
+ xtensa_create_memory_regions(&env->config->datarom, "xtensa.datarom",
+ get_system_memory());
+ xtensa_create_memory_regions(&env->config->dataram, "xtensa.dataram",
+ get_system_memory());
+ xtensa_create_memory_regions(&env->config->sysrom, "xtensa.sysrom",
+ get_system_memory());
+ xtensa_create_memory_regions(&sysram, "xtensa.sysram",
+ get_system_memory());
}
if (serial_hds[0]) {