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 */