SPARC64: split cpu_get_phys_page_debug() from cpu_get_phys_page_nofault()
This patch makes cpu_get_phys_page_debug() independent from cpu_get_phys_page_nofault() in advance of implementing nonfaulting load. This also modifies cpu_get_phys_page_nofault() to be compiled only on TARGET_SPARC64 because it is not required on SPARC32. Signed-off-by: Tsuneo Saito <tsnsaito@gmail.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
		
							parent
							
								
									321365ab17
								
							
						
					
					
						commit
						b64b643614
					
				| 
						 | 
				
			
			@ -541,9 +541,11 @@ static inline int tlb_compare_context(const SparcTLBEntry *tlb,
 | 
			
		|||
#if !defined(CONFIG_USER_ONLY)
 | 
			
		||||
void cpu_unassigned_access(CPUState *env1, target_phys_addr_t addr,
 | 
			
		||||
                           int is_write, int is_exec, int is_asi, int size);
 | 
			
		||||
#if defined(TARGET_SPARC64)
 | 
			
		||||
target_phys_addr_t cpu_get_phys_page_nofault(CPUState *env, target_ulong addr,
 | 
			
		||||
                                           int mmu_idx);
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
#endif
 | 
			
		||||
int cpu_sparc_signal_handler(int host_signum, void *pinfo, void *puc);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -746,6 +746,7 @@ static int cpu_sparc_get_phys_page(CPUState *env, target_phys_addr_t *phys,
 | 
			
		|||
                                mmu_idx, &page_size);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if defined(TARGET_SPARC64)
 | 
			
		||||
target_phys_addr_t cpu_get_phys_page_nofault(CPUState *env, target_ulong addr,
 | 
			
		||||
                                           int mmu_idx)
 | 
			
		||||
{
 | 
			
		||||
| 
						 | 
				
			
			@ -760,10 +761,22 @@ target_phys_addr_t cpu_get_phys_page_nofault(CPUState *env, target_ulong addr,
 | 
			
		|||
        return -1;
 | 
			
		||||
    return phys_addr;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
target_phys_addr_t cpu_get_phys_page_debug(CPUState *env, target_ulong addr)
 | 
			
		||||
{
 | 
			
		||||
    return cpu_get_phys_page_nofault(env, addr, cpu_mmu_index(env));
 | 
			
		||||
    target_phys_addr_t phys_addr;
 | 
			
		||||
    int mmu_idx = cpu_mmu_index(env);
 | 
			
		||||
 | 
			
		||||
    if (cpu_sparc_get_phys_page(env, &phys_addr, addr, 2, mmu_idx) != 0) {
 | 
			
		||||
        if (cpu_sparc_get_phys_page(env, &phys_addr, addr, 0, mmu_idx) != 0) {
 | 
			
		||||
            return -1;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    if (cpu_get_physical_page_desc(phys_addr) == IO_MEM_UNASSIGNED) {
 | 
			
		||||
        return -1;
 | 
			
		||||
    }
 | 
			
		||||
    return phys_addr;
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue