| /* | |
| * Declarations for functions which are internal to the memory subsystem. | |
| * | |
| * Copyright 2011 Red Hat, Inc. and/or its affiliates | |
| * | |
| * Authors: | |
| * Avi Kivity <avi@redhat.com> | |
| * | |
| * This work is licensed under the terms of the GNU GPL, version 2 or | |
| * later. See the COPYING file in the top-level directory. | |
| * | |
| */ | |
| #ifndef MEMORY_INTERNAL_H | |
| #define MEMORY_INTERNAL_H | |
| #ifndef CONFIG_USER_ONLY | |
| static inline AddressSpaceDispatch *flatview_to_dispatch(FlatView *fv) | |
| { | |
| return fv->dispatch; | |
| } | |
| static inline AddressSpaceDispatch *address_space_to_dispatch(AddressSpace *as) | |
| { | |
| return flatview_to_dispatch(address_space_to_flatview(as)); | |
| } | |
| FlatView *address_space_get_flatview(AddressSpace *as); | |
| void flatview_unref(FlatView *view); | |
| extern const MemoryRegionOps unassigned_mem_ops; | |
| void flatview_add_to_dispatch(FlatView *fv, MemoryRegionSection *section); | |
| AddressSpaceDispatch *address_space_dispatch_new(FlatView *fv); | |
| void address_space_dispatch_compact(AddressSpaceDispatch *d); | |
| void address_space_dispatch_free(AddressSpaceDispatch *d); | |
| void mtree_print_dispatch(struct AddressSpaceDispatch *d, | |
| MemoryRegion *root); | |
| /* returns true if end is big endian. */ | |
| static inline bool devend_big_endian(enum device_endian end) | |
| { | |
| if (end == DEVICE_NATIVE_ENDIAN) { | |
| return target_big_endian(); | |
| } | |
| return end == DEVICE_BIG_ENDIAN; | |
| } | |
| /* enum device_endian to MemOp. */ | |
| static inline MemOp devend_memop(enum device_endian end) | |
| { | |
| return devend_big_endian(end) ? MO_BE : MO_LE; | |
| } | |
| #endif | |
| #endif |