xref: /qemu/hw/xtensa/xtensa_memory.c (revision 8be545ba5a315a9aaf7307f143a4a7926a6e605c)
1e53fa62cSMax Filippov /*
2e53fa62cSMax Filippov  * Copyright (c) 2017, Max Filippov, Open Source and Linux Lab.
3e53fa62cSMax Filippov  * All rights reserved.
4e53fa62cSMax Filippov  *
5e53fa62cSMax Filippov  * Redistribution and use in source and binary forms, with or without
6e53fa62cSMax Filippov  * modification, are permitted provided that the following conditions are met:
7e53fa62cSMax Filippov  *     * Redistributions of source code must retain the above copyright
8e53fa62cSMax Filippov  *       notice, this list of conditions and the following disclaimer.
9e53fa62cSMax Filippov  *     * Redistributions in binary form must reproduce the above copyright
10e53fa62cSMax Filippov  *       notice, this list of conditions and the following disclaimer in the
11e53fa62cSMax Filippov  *       documentation and/or other materials provided with the distribution.
12e53fa62cSMax Filippov  *     * Neither the name of the Open Source and Linux Lab nor the
13e53fa62cSMax Filippov  *       names of its contributors may be used to endorse or promote products
14e53fa62cSMax Filippov  *       derived from this software without specific prior written permission.
15e53fa62cSMax Filippov  *
16e53fa62cSMax Filippov  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17e53fa62cSMax Filippov  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18e53fa62cSMax Filippov  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19e53fa62cSMax Filippov  * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
20e53fa62cSMax Filippov  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21e53fa62cSMax Filippov  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22e53fa62cSMax Filippov  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23e53fa62cSMax Filippov  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24e53fa62cSMax Filippov  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25e53fa62cSMax Filippov  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26e53fa62cSMax Filippov  */
27e53fa62cSMax Filippov 
28e53fa62cSMax Filippov #include "qemu/osdep.h"
29e53fa62cSMax Filippov #include "qapi/error.h"
30*8be545baSRichard Henderson #include "system/memory.h"
31e53fa62cSMax Filippov #include "qemu/error-report.h"
32e53fa62cSMax Filippov #include "xtensa_memory.h"
33e53fa62cSMax Filippov 
34e53fa62cSMax Filippov void xtensa_create_memory_regions(const XtensaMemory *memory,
35e53fa62cSMax Filippov                                   const char *name,
36e53fa62cSMax Filippov                                   MemoryRegion *super)
37e53fa62cSMax Filippov {
38e53fa62cSMax Filippov     unsigned i;
39e53fa62cSMax Filippov     GString *num_name = g_string_new(NULL);
40e53fa62cSMax Filippov 
41e53fa62cSMax Filippov     for (i = 0; i < memory->num; ++i) {
42e53fa62cSMax Filippov         MemoryRegion *m;
43e53fa62cSMax Filippov 
44e53fa62cSMax Filippov         g_string_printf(num_name, "%s%u", name, i);
45e53fa62cSMax Filippov         m = g_new(MemoryRegion, 1);
46e53fa62cSMax Filippov         memory_region_init_ram(m, NULL, num_name->str,
47e53fa62cSMax Filippov                                memory->location[i].size, &error_fatal);
48e53fa62cSMax Filippov         memory_region_add_subregion(super, memory->location[i].addr, m);
49e53fa62cSMax Filippov     }
50e53fa62cSMax Filippov     g_string_free(num_name, true);
51e53fa62cSMax Filippov }
52