]>
Commit | Line | Data |
---|---|---|
80167a8a WC |
1 | /* |
2 | * QEMU memory mapping | |
3 | * | |
4 | * Copyright Fujitsu, Corp. 2011, 2012 | |
5 | * | |
6 | * Authors: | |
7 | * Wen Congyang <wency@cn.fujitsu.com> | |
8 | * | |
9 | * This work is licensed under the terms of the GNU GPL, version 2. See | |
10 | * the COPYING file in the top-level directory. | |
11 | * | |
12 | */ | |
13 | ||
14 | #ifndef MEMORY_MAPPING_H | |
15 | #define MEMORY_MAPPING_H | |
16 | ||
17 | #include "qemu-queue.h" | |
18 | ||
fae001f5 | 19 | #ifndef CONFIG_USER_ONLY |
80167a8a WC |
20 | /* The physical and virtual address in the memory mapping are contiguous. */ |
21 | typedef struct MemoryMapping { | |
22 | target_phys_addr_t phys_addr; | |
23 | target_ulong virt_addr; | |
24 | ram_addr_t length; | |
25 | QTAILQ_ENTRY(MemoryMapping) next; | |
26 | } MemoryMapping; | |
27 | ||
28 | typedef struct MemoryMappingList { | |
29 | unsigned int num; | |
30 | MemoryMapping *last_mapping; | |
31 | QTAILQ_HEAD(, MemoryMapping) head; | |
32 | } MemoryMappingList; | |
33 | ||
34 | /* | |
35 | * add or merge the memory region [phys_addr, phys_addr + length) into the | |
36 | * memory mapping's list. The region's virtual address starts with virt_addr, | |
37 | * and is contiguous. The list is sorted by phys_addr. | |
38 | */ | |
39 | void memory_mapping_list_add_merge_sorted(MemoryMappingList *list, | |
40 | target_phys_addr_t phys_addr, | |
41 | target_phys_addr_t virt_addr, | |
42 | ram_addr_t length); | |
43 | ||
44 | void memory_mapping_list_free(MemoryMappingList *list); | |
45 | ||
46 | void memory_mapping_list_init(MemoryMappingList *list); | |
47 | ||
fae001f5 WC |
48 | #else |
49 | ||
50 | /* We use MemoryMappingList* in cpu-all.h */ | |
51 | typedef struct MemoryMappingList MemoryMappingList; | |
52 | #endif | |
80167a8a | 53 | #endif |