mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	 2d0fc797fa
			
		
	
	
		2d0fc797fa
		
	
	
	
	
		
			
			As per POSIX specification of limits.h [1], OS libc may define PAGE_SIZE in limits.h. To prevent collosion of definition, we rename PAGE_SIZE here. [1]: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> Reviewed-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> Message-Id: <20210118063808.12471-6-jiaxun.yang@flygoat.com> Signed-off-by: Thomas Huth <thuth@redhat.com>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1016 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1016 B
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2018 Virtuozzo International GmbH
 | |
|  *
 | |
|  * This work is licensed under the terms of the GNU GPL, version 2 or later.
 | |
|  *
 | |
|  */
 | |
| 
 | |
| #ifndef ADDRSPACE_H
 | |
| #define ADDRSPACE_H
 | |
| 
 | |
| #include "qemu_elf.h"
 | |
| 
 | |
| #define ELF2DMP_PAGE_BITS 12
 | |
| #define ELF2DMP_PAGE_SIZE (1ULL << ELF2DMP_PAGE_BITS)
 | |
| #define ELF2DMP_PFN_MASK (~(ELF2DMP_PAGE_SIZE - 1))
 | |
| 
 | |
| #define INVALID_PA  UINT64_MAX
 | |
| 
 | |
| struct pa_block {
 | |
|     uint8_t *addr;
 | |
|     uint64_t paddr;
 | |
|     uint64_t size;
 | |
| };
 | |
| 
 | |
| struct pa_space {
 | |
|     size_t block_nr;
 | |
|     struct pa_block *block;
 | |
| };
 | |
| 
 | |
| struct va_space {
 | |
|     uint64_t dtb;
 | |
|     struct pa_space *ps;
 | |
| };
 | |
| 
 | |
| int pa_space_create(struct pa_space *ps, QEMU_Elf *qemu_elf);
 | |
| void pa_space_destroy(struct pa_space *ps);
 | |
| 
 | |
| void va_space_create(struct va_space *vs, struct pa_space *ps, uint64_t dtb);
 | |
| void va_space_set_dtb(struct va_space *vs, uint64_t dtb);
 | |
| void *va_space_resolve(struct va_space *vs, uint64_t va);
 | |
| int va_space_rw(struct va_space *vs, uint64_t addr,
 | |
|         void *buf, size_t size, int is_write);
 | |
| 
 | |
| #endif /* ADDRSPACE_H */
 |