1d4c9cab3SPhilippe Mathieu-Daudé /* 2d4c9cab3SPhilippe Mathieu-Daudé * Declarations for functions which are internal to the memory subsystem. 3d4c9cab3SPhilippe Mathieu-Daudé * 4d4c9cab3SPhilippe Mathieu-Daudé * Copyright 2011 Red Hat, Inc. and/or its affiliates 5d4c9cab3SPhilippe Mathieu-Daudé * 6d4c9cab3SPhilippe Mathieu-Daudé * Authors: 7d4c9cab3SPhilippe Mathieu-Daudé * Avi Kivity <avi@redhat.com> 8d4c9cab3SPhilippe Mathieu-Daudé * 9d4c9cab3SPhilippe Mathieu-Daudé * This work is licensed under the terms of the GNU GPL, version 2 or 10d4c9cab3SPhilippe Mathieu-Daudé * later. See the COPYING file in the top-level directory. 11d4c9cab3SPhilippe Mathieu-Daudé * 12d4c9cab3SPhilippe Mathieu-Daudé */ 13d4c9cab3SPhilippe Mathieu-Daudé 14d4c9cab3SPhilippe Mathieu-Daudé #ifndef MEMORY_INTERNAL_H 15d4c9cab3SPhilippe Mathieu-Daudé #define MEMORY_INTERNAL_H 16d4c9cab3SPhilippe Mathieu-Daudé 17d4c9cab3SPhilippe Mathieu-Daudé #ifndef CONFIG_USER_ONLY flatview_to_dispatch(FlatView * fv)18d4c9cab3SPhilippe Mathieu-Daudéstatic inline AddressSpaceDispatch *flatview_to_dispatch(FlatView *fv) 19d4c9cab3SPhilippe Mathieu-Daudé { 20d4c9cab3SPhilippe Mathieu-Daudé return fv->dispatch; 21d4c9cab3SPhilippe Mathieu-Daudé } 22d4c9cab3SPhilippe Mathieu-Daudé address_space_to_dispatch(AddressSpace * as)23d4c9cab3SPhilippe Mathieu-Daudéstatic inline AddressSpaceDispatch *address_space_to_dispatch(AddressSpace *as) 24d4c9cab3SPhilippe Mathieu-Daudé { 25d4c9cab3SPhilippe Mathieu-Daudé return flatview_to_dispatch(address_space_to_flatview(as)); 26d4c9cab3SPhilippe Mathieu-Daudé } 27d4c9cab3SPhilippe Mathieu-Daudé 28d4c9cab3SPhilippe Mathieu-Daudé FlatView *address_space_get_flatview(AddressSpace *as); 29d4c9cab3SPhilippe Mathieu-Daudé void flatview_unref(FlatView *view); 30d4c9cab3SPhilippe Mathieu-Daudé 31d4c9cab3SPhilippe Mathieu-Daudé extern const MemoryRegionOps unassigned_mem_ops; 32d4c9cab3SPhilippe Mathieu-Daudé 33d4c9cab3SPhilippe Mathieu-Daudé void flatview_add_to_dispatch(FlatView *fv, MemoryRegionSection *section); 34d4c9cab3SPhilippe Mathieu-Daudé AddressSpaceDispatch *address_space_dispatch_new(FlatView *fv); 35d4c9cab3SPhilippe Mathieu-Daudé void address_space_dispatch_compact(AddressSpaceDispatch *d); 36d4c9cab3SPhilippe Mathieu-Daudé void address_space_dispatch_free(AddressSpaceDispatch *d); 37d4c9cab3SPhilippe Mathieu-Daudé 38d4c9cab3SPhilippe Mathieu-Daudé void mtree_print_dispatch(struct AddressSpaceDispatch *d, 39d4c9cab3SPhilippe Mathieu-Daudé MemoryRegion *root); 40d4c9cab3SPhilippe Mathieu-Daudé 41d4c9cab3SPhilippe Mathieu-Daudé /* returns true if end is big endian. */ devend_big_endian(enum device_endian end)42d4c9cab3SPhilippe Mathieu-Daudéstatic inline bool devend_big_endian(enum device_endian end) 43d4c9cab3SPhilippe Mathieu-Daudé { 44d4c9cab3SPhilippe Mathieu-Daudé if (end == DEVICE_NATIVE_ENDIAN) { 45*b939b8e4SPhilippe Mathieu-Daudé return target_big_endian(); 46d4c9cab3SPhilippe Mathieu-Daudé } 47d4c9cab3SPhilippe Mathieu-Daudé return end == DEVICE_BIG_ENDIAN; 48d4c9cab3SPhilippe Mathieu-Daudé } 49d4c9cab3SPhilippe Mathieu-Daudé 50d4c9cab3SPhilippe Mathieu-Daudé /* enum device_endian to MemOp. */ devend_memop(enum device_endian end)51d4c9cab3SPhilippe Mathieu-Daudéstatic inline MemOp devend_memop(enum device_endian end) 52d4c9cab3SPhilippe Mathieu-Daudé { 53d4c9cab3SPhilippe Mathieu-Daudé return devend_big_endian(end) ? MO_BE : MO_LE; 54d4c9cab3SPhilippe Mathieu-Daudé } 55d4c9cab3SPhilippe Mathieu-Daudé 56d4c9cab3SPhilippe Mathieu-Daudé #endif 57d4c9cab3SPhilippe Mathieu-Daudé #endif 58