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