On 06/21/2016 10:09 AM, Peter Maydell wrote:
@@ -825,8 +846,8 @@ static void page_flush_tb(void) { int i;- for (i = 0; i < V_L1_SIZE; i++) { - page_flush_tb_1(V_L1_SHIFT / V_L2_BITS - 1, l1_map + i); + for (i = 0; i < v_l1_size; i++) { + page_flush_tb_1(v_l2_levels, l1_map + i); } } @@ -1850,9 +1871,9 @@ int walk_memory_regions(void *priv, walk_memory_regions_fn fn) data.start = -1u; data.prot = 0; - for (i = 0; i < V_L1_SIZE; i++) { - int rc = walk_memory_regions_1(&data, (target_ulong)i << (V_L1_SHIFT + TARGET_PAGE_BITS), - V_L1_SHIFT / V_L2_BITS - 1, l1_map + i); + for (i = 0; i < v_l1_size; i++) { + target_ulong base = i << (v_l1_shift + TARGET_PAGE_BITS); + int rc = walk_memory_regions_1(&data, base, v_l2_levels, l1_map + i);
It would probably be good to cache v_l1_size in a local, so that we don't keep re-reading it around the loop when we know it doesn't change.
Otherwise, Reviewed-by: Richard Henderson <[email protected]> r~
