tb-maint.c (c9a5217bd39c51316015a662881fed36f52aea7b) | tb-maint.c (f349e92e8edc66b6d4cfc4a0981da6d510fef683) |
---|---|
1/* 2 * Translation Block Maintaince 3 * 4 * Copyright (c) 2003 Fabrice Bellard 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either --- 1170 unchanged lines hidden (view full) --- 1179 } 1180 assert_page_locked(pd); 1181 tb_invalidate_phys_page_range__locked(pages, pd, start, bound, 0); 1182 } 1183 page_collection_unlock(pages); 1184} 1185 1186/* | 1/* 2 * Translation Block Maintaince 3 * 4 * Copyright (c) 2003 Fabrice Bellard 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either --- 1170 unchanged lines hidden (view full) --- 1179 } 1180 assert_page_locked(pd); 1181 tb_invalidate_phys_page_range__locked(pages, pd, start, bound, 0); 1182 } 1183 page_collection_unlock(pages); 1184} 1185 1186/* |
1187 * len must be <= 8 and start must be a multiple of len. 1188 * Called via softmmu_template.h when code areas are written to with 1189 * iothread mutex not held. 1190 * | |
1191 * Call with all @pages in the range [@start, @start + len[ locked. 1192 */ 1193void tb_invalidate_phys_page_fast__locked(struct page_collection *pages, 1194 tb_page_addr_t start, int len, 1195 uintptr_t retaddr) 1196{ 1197 PageDesc *p; 1198 1199 p = page_find(start >> TARGET_PAGE_BITS); 1200 if (!p) { 1201 return; 1202 } 1203 1204 assert_page_locked(p); 1205 tb_invalidate_phys_page_range__locked(pages, p, start, start + len, 1206 retaddr); 1207} | 1187 * Call with all @pages in the range [@start, @start + len[ locked. 1188 */ 1189void tb_invalidate_phys_page_fast__locked(struct page_collection *pages, 1190 tb_page_addr_t start, int len, 1191 uintptr_t retaddr) 1192{ 1193 PageDesc *p; 1194 1195 p = page_find(start >> TARGET_PAGE_BITS); 1196 if (!p) { 1197 return; 1198 } 1199 1200 assert_page_locked(p); 1201 tb_invalidate_phys_page_range__locked(pages, p, start, start + len, 1202 retaddr); 1203} |
1204 1205/* 1206 * len must be <= 8 and start must be a multiple of len. 1207 * Called via softmmu_template.h when code areas are written to with 1208 * iothread mutex not held. 1209 */ 1210void tb_invalidate_phys_range_fast(ram_addr_t ram_addr, 1211 unsigned size, 1212 uintptr_t retaddr) 1213{ 1214 struct page_collection *pages; 1215 1216 pages = page_collection_lock(ram_addr, ram_addr + size); 1217 tb_invalidate_phys_page_fast__locked(pages, ram_addr, size, retaddr); 1218 page_collection_unlock(pages); 1219} 1220 |
|
1208#endif /* CONFIG_USER_ONLY */ | 1221#endif /* CONFIG_USER_ONLY */ |