Fix the bug introduced by subpage code preventing PC boot
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2898 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
		
							parent
							
								
									78749ba859
								
							
						
					
					
						commit
						49e9fba271
					
				
							
								
								
									
										6
									
								
								exec.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								exec.c
									
									
									
									
									
								
							@ -1922,7 +1922,7 @@ static void *subpage_init (target_phys_addr_t base, uint32_t *phys,
 | 
				
			|||||||
                need_subpage = 1;                                       \
 | 
					                need_subpage = 1;                                       \
 | 
				
			||||||
        }                                                               \
 | 
					        }                                                               \
 | 
				
			||||||
                                                                        \
 | 
					                                                                        \
 | 
				
			||||||
        if (end_addr - addr > TARGET_PAGE_SIZE)                         \
 | 
					        if ((start_addr + orig_size) - addr >= TARGET_PAGE_SIZE)        \
 | 
				
			||||||
            end_addr2 = TARGET_PAGE_SIZE - 1;                           \
 | 
					            end_addr2 = TARGET_PAGE_SIZE - 1;                           \
 | 
				
			||||||
        else {                                                          \
 | 
					        else {                                                          \
 | 
				
			||||||
            end_addr2 = (start_addr + orig_size - 1) & ~TARGET_PAGE_MASK; \
 | 
					            end_addr2 = (start_addr + orig_size - 1) & ~TARGET_PAGE_MASK; \
 | 
				
			||||||
@ -1944,9 +1944,9 @@ void cpu_register_physical_memory(target_phys_addr_t start_addr,
 | 
				
			|||||||
    unsigned long orig_size = size;
 | 
					    unsigned long orig_size = size;
 | 
				
			||||||
    void *subpage;
 | 
					    void *subpage;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    end_addr = start_addr + (target_phys_addr_t)size;
 | 
					 | 
				
			||||||
    size = (size + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK;
 | 
					    size = (size + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK;
 | 
				
			||||||
    for(addr = start_addr; addr < end_addr; addr += TARGET_PAGE_SIZE) {
 | 
					    end_addr = start_addr + (target_phys_addr_t)size;
 | 
				
			||||||
 | 
					    for(addr = start_addr; addr != end_addr; addr += TARGET_PAGE_SIZE) {
 | 
				
			||||||
        p = phys_page_find(addr >> TARGET_PAGE_BITS);
 | 
					        p = phys_page_find(addr >> TARGET_PAGE_BITS);
 | 
				
			||||||
        if (p && p->phys_offset != IO_MEM_UNASSIGNED) {
 | 
					        if (p && p->phys_offset != IO_MEM_UNASSIGNED) {
 | 
				
			||||||
            unsigned long orig_memory = p->phys_offset;
 | 
					            unsigned long orig_memory = p->phys_offset;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user