Commit e3f4e2a4b0df510e441badb85c9398516c27bd66
1 parent
706cd4b5
Initialize physical memory space to IO_MEM_UNASSIGNED.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1801 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
9 additions
and
6 deletions
exec.c
| ... | ... | @@ -204,6 +204,7 @@ static inline PageDesc *page_find(unsigned int index) |
| 204 | 204 | static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) |
| 205 | 205 | { |
| 206 | 206 | void **lp, **p; |
| 207 | + PhysPageDesc *pd; | |
| 207 | 208 | |
| 208 | 209 | p = (void **)l1_phys_map; |
| 209 | 210 | #if TARGET_PHYS_ADDR_SPACE_BITS > 32 |
| ... | ... | @@ -223,16 +224,18 @@ static PhysPageDesc *phys_page_find_alloc(target_phys_addr_t index, int alloc) |
| 223 | 224 | } |
| 224 | 225 | #endif |
| 225 | 226 | lp = p + ((index >> L2_BITS) & (L1_SIZE - 1)); |
| 226 | - p = *lp; | |
| 227 | - if (!p) { | |
| 227 | + pd = *lp; | |
| 228 | + if (!pd) { | |
| 229 | + int i; | |
| 228 | 230 | /* allocate if not found */ |
| 229 | 231 | if (!alloc) |
| 230 | 232 | return NULL; |
| 231 | - p = qemu_vmalloc(sizeof(PhysPageDesc) * L2_SIZE); | |
| 232 | - memset(p, 0, sizeof(PhysPageDesc) * L2_SIZE); | |
| 233 | - *lp = p; | |
| 233 | + pd = qemu_vmalloc(sizeof(PhysPageDesc) * L2_SIZE); | |
| 234 | + *lp = pd; | |
| 235 | + for (i = 0; i < L2_SIZE; i++) | |
| 236 | + pd[i].phys_offset = IO_MEM_UNASSIGNED; | |
| 234 | 237 | } |
| 235 | - return ((PhysPageDesc *)p) + (index & (L2_SIZE - 1)); | |
| 238 | + return ((PhysPageDesc *)pd) + (index & (L2_SIZE - 1)); | |
| 236 | 239 | } |
| 237 | 240 | |
| 238 | 241 | static inline PhysPageDesc *phys_page_find(target_phys_addr_t index) | ... | ... |