Export qemu_ram_addr_from_host
To be used by next patches. Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
		
							parent
							
								
									e7701825e1
								
							
						
					
					
						commit
						e890261f67
					
				| @ -47,7 +47,8 @@ void qemu_ram_free(ram_addr_t addr); | ||||
| /* This should only be used for ram local to a device.  */ | ||||
| void *qemu_get_ram_ptr(ram_addr_t addr); | ||||
| /* This should not be used by devices.  */ | ||||
| ram_addr_t qemu_ram_addr_from_host(void *ptr); | ||||
| int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr); | ||||
| ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr); | ||||
| 
 | ||||
| int cpu_register_io_memory(CPUReadMemoryFunc * const *mem_read, | ||||
|                            CPUWriteMemoryFunc * const *mem_write, | ||||
|  | ||||
| @ -334,7 +334,7 @@ static inline tb_page_addr_t get_page_addr_code(CPUState *env1, target_ulong add | ||||
|     } | ||||
|     p = (void *)(unsigned long)addr | ||||
|         + env1->tlb_table[mmu_idx][page_index].addend; | ||||
|     return qemu_ram_addr_from_host(p); | ||||
|     return qemu_ram_addr_from_host_nofail(p); | ||||
| } | ||||
| #endif | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										26
									
								
								exec.c
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								exec.c
									
									
									
									
									
								
							| @ -2085,7 +2085,7 @@ static inline void tlb_update_dirty(CPUTLBEntry *tlb_entry) | ||||
|     if ((tlb_entry->addr_write & ~TARGET_PAGE_MASK) == IO_MEM_RAM) { | ||||
|         p = (void *)(unsigned long)((tlb_entry->addr_write & TARGET_PAGE_MASK) | ||||
|             + tlb_entry->addend); | ||||
|         ram_addr = qemu_ram_addr_from_host(p); | ||||
|         ram_addr = qemu_ram_addr_from_host_nofail(p); | ||||
|         if (!cpu_physical_memory_is_dirty(ram_addr)) { | ||||
|             tlb_entry->addr_write |= TLB_NOTDIRTY; | ||||
|         } | ||||
| @ -2938,23 +2938,31 @@ void *qemu_get_ram_ptr(ram_addr_t addr) | ||||
|     return NULL; | ||||
| } | ||||
| 
 | ||||
| /* Some of the softmmu routines need to translate from a host pointer
 | ||||
|    (typically a TLB entry) back to a ram offset.  */ | ||||
| ram_addr_t qemu_ram_addr_from_host(void *ptr) | ||||
| int qemu_ram_addr_from_host(void *ptr, ram_addr_t *ram_addr) | ||||
| { | ||||
|     RAMBlock *block; | ||||
|     uint8_t *host = ptr; | ||||
| 
 | ||||
|     QLIST_FOREACH(block, &ram_list.blocks, next) { | ||||
|         if (host - block->host < block->length) { | ||||
|             return block->offset + (host - block->host); | ||||
|             *ram_addr = block->offset + (host - block->host); | ||||
|             return 0; | ||||
|         } | ||||
|     } | ||||
|     return -1; | ||||
| } | ||||
| 
 | ||||
|     fprintf(stderr, "Bad ram pointer %p\n", ptr); | ||||
|     abort(); | ||||
| /* Some of the softmmu routines need to translate from a host pointer
 | ||||
|    (typically a TLB entry) back to a ram offset.  */ | ||||
| ram_addr_t qemu_ram_addr_from_host_nofail(void *ptr) | ||||
| { | ||||
|     ram_addr_t ram_addr; | ||||
| 
 | ||||
|     return 0; | ||||
|     if (qemu_ram_addr_from_host(ptr, &ram_addr)) { | ||||
|         fprintf(stderr, "Bad ram pointer %p\n", ptr); | ||||
|         abort(); | ||||
|     } | ||||
|     return ram_addr; | ||||
| } | ||||
| 
 | ||||
| static uint32_t unassigned_mem_readb(void *opaque, target_phys_addr_t addr) | ||||
| @ -3703,7 +3711,7 @@ void cpu_physical_memory_unmap(void *buffer, target_phys_addr_t len, | ||||
| { | ||||
|     if (buffer != bounce.buffer) { | ||||
|         if (is_write) { | ||||
|             ram_addr_t addr1 = qemu_ram_addr_from_host(buffer); | ||||
|             ram_addr_t addr1 = qemu_ram_addr_from_host_nofail(buffer); | ||||
|             while (access_len) { | ||||
|                 unsigned l; | ||||
|                 l = TARGET_PAGE_SIZE; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Marcelo Tosatti
						Marcelo Tosatti