mirror of https://github.com/xqemu/xqemu.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 did;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* return the size or -1 if error */
|
|
||||||
int load_image_targphys(const char *filename,
|
int load_image_targphys(const char *filename,
|
||||||
hwaddr addr, uint64_t max_sz)
|
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;
|
int size;
|
||||||
|
|
||||||
|
@ -144,7 +150,7 @@ int load_image_targphys(const char *filename,
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
rom_add_file_fixed(filename, addr, -1);
|
rom_add_file_fixed_as(filename, addr, -1, as);
|
||||||
}
|
}
|
||||||
return size;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,8 +14,28 @@
|
||||||
int get_image_size(const char *filename);
|
int get_image_size(const char *filename);
|
||||||
int load_image(const char *filename, uint8_t *addr); /* deprecated */
|
int load_image(const char *filename, uint8_t *addr); /* deprecated */
|
||||||
ssize_t load_image_size(const char *filename, void *addr, size_t size);
|
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,
|
int load_image_targphys(const char *filename, hwaddr,
|
||||||
uint64_t max_sz);
|
uint64_t max_sz);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* load_image_mr: load an image into a memory region
|
* load_image_mr: load an image into a memory region
|
||||||
* @filename: Path to the image file
|
* @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)
|
rom_add_file(_f, NULL, 0, _i, false, _mr, NULL)
|
||||||
#define rom_add_file_as(_f, _as, _i) \
|
#define rom_add_file_as(_f, _as, _i) \
|
||||||
rom_add_file(_f, NULL, 0, _i, false, NULL, _as)
|
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) \
|
#define rom_add_blob_fixed_as(_f, _b, _l, _a, _as) \
|
||||||
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, _as)
|
rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, _as)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue