mirror of https://gitee.com/openkylin/qemu.git
loader: Add AddressSpace loading support to targphys
Add a new function load_image_targphys_as() that allows the caller to specify an AddressSpace to use when loading a targphys. The original load_image_targphys() function doesn't have any change in functionality. Signed-off-by: Alistair Francis <alistair.francis@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-id: 87de45de7acf02cbe6bae9d6c4d6fb8f3aba4f61.1474331683.git.alistair.francis@xilinx.com Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
5e774eb3bd
commit
93ffc7c766
|
@ -133,9 +133,15 @@ ssize_t read_targphys(const char *name,
|
|||
return did;
|
||||
}
|
||||
|
||||
/* return the size or -1 if error */
|
||||
int load_image_targphys(const char *filename,
|
||||
hwaddr addr, uint64_t max_sz)
|
||||
{
|
||||
return load_image_targphys_as(filename, addr, max_sz, NULL);
|
||||
}
|
||||
|
||||
/* return the size or -1 if error */
|
||||
int load_image_targphys_as(const char *filename,
|
||||
hwaddr addr, uint64_t max_sz, AddressSpace *as)
|
||||
{
|
||||
int size;
|
||||
|
||||
|
@ -144,7 +150,7 @@ int load_image_targphys(const char *filename,
|
|||
return -1;
|
||||
}
|
||||
if (size > 0) {
|
||||
rom_add_file_fixed(filename, addr, -1);
|
||||
rom_add_file_fixed_as(filename, addr, -1, as);
|
||||
}
|
||||
return size;
|
||||
}
|
||||
|
|
|
@ -14,8 +14,28 @@
|
|||
int get_image_size(const char *filename);
|
||||
int load_image(const char *filename, uint8_t *addr); /* deprecated */
|
||||
ssize_t load_image_size(const char *filename, void *addr, size_t size);
|
||||
|
||||
/**load_image_targphys_as:
|
||||
* @filename: Path to the image file
|
||||
* @addr: Address to load the image to
|
||||
* @max_sz: The maximum size of the image to load
|
||||
* @as: The AddressSpace to load the ELF to. The value of address_space_memory
|
||||
* is used if nothing is supplied here.
|
||||
*
|
||||
* Load a fixed image into memory.
|
||||
*
|
||||
* Returns the size of the loaded image on success, -1 otherwise.
|
||||
*/
|
||||
int load_image_targphys_as(const char *filename,
|
||||
hwaddr addr, uint64_t max_sz, AddressSpace *as);
|
||||
|
||||
/** load_image_targphys:
|
||||
* Same as load_image_targphys_as(), but doesn't allow the caller to specify
|
||||
* an AddressSpace.
|
||||
*/
|
||||
int load_image_targphys(const char *filename, hwaddr,
|
||||
uint64_t max_sz);
|
||||
|
||||
/**
|
||||
* load_image_mr: load an image into a memory region
|
||||
* @filename: Path to the image file
|
||||
|
@ -179,6 +199,8 @@ void hmp_info_roms(Monitor *mon, const QDict *qdict);
|
|||
rom_add_file(_f, NULL, 0, _i, false, _mr, NULL)
|
||||
#define rom_add_file_as(_f, _as, _i) \
|
||||
rom_add_file(_f, NULL, 0, _i, false, NULL, _as)
|
||||
#define rom_add_file_fixed_as(_f, _a, _i, _as) \
|
||||
rom_add_file(_f, NULL, _a, _i, false, NULL, _as)
|
||||
#define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \
|
||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, _as)
|
||||
|
||||
|
|
Loading…
Reference in New Issue