]>
Commit | Line | Data |
---|---|---|
ca20cf32 BS |
1 | #ifndef LOADER_H |
2 | #define LOADER_H | |
84f2d0ea | 3 | #include "qapi/qmp/qdict.h" |
a88b362c | 4 | #include "hw/nvram/fw_cfg.h" |
ca20cf32 BS |
5 | |
6 | /* loader.c */ | |
a1483f88 MT |
7 | /** |
8 | * get_image_size: retrieve size of an image file | |
9 | * @filename: Path to the image file | |
10 | * | |
11 | * Returns the size of the image file on success, -1 otherwise. | |
12 | * On error, errno is also set as appropriate. | |
13 | */ | |
ca20cf32 BS |
14 | int get_image_size(const char *filename); |
15 | int load_image(const char *filename, uint8_t *addr); /* deprecated */ | |
ea87616d | 16 | ssize_t load_image_size(const char *filename, void *addr, size_t size); |
a8170e5e | 17 | int load_image_targphys(const char *filename, hwaddr, |
80a2ba3d | 18 | uint64_t max_sz); |
235e74af | 19 | int load_image_gzipped(const char *filename, hwaddr addr, uint64_t max_sz); |
18674b26 AK |
20 | |
21 | #define ELF_LOAD_FAILED -1 | |
22 | #define ELF_LOAD_NOT_ELF -2 | |
23 | #define ELF_LOAD_WRONG_ARCH -3 | |
24 | #define ELF_LOAD_WRONG_ENDIAN -4 | |
25 | const char *load_elf_strerror(int error); | |
409dbce5 AJ |
26 | int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t), |
27 | void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr, | |
28 | uint64_t *highaddr, int big_endian, int elf_machine, | |
29 | int clear_lsb); | |
a8170e5e AK |
30 | int load_aout(const char *filename, hwaddr addr, int max_sz, |
31 | int bswap_needed, hwaddr target_page_size); | |
32 | int load_uimage(const char *filename, hwaddr *ep, | |
33 | hwaddr *loadaddr, int *is_linux); | |
ca20cf32 | 34 | |
84aee0de SB |
35 | /** |
36 | * load_ramdisk: | |
37 | * @filename: Path to the ramdisk image | |
38 | * @addr: Memory address to load the ramdisk to | |
39 | * @max_sz: Maximum allowed ramdisk size (for non-u-boot ramdisks) | |
40 | * | |
41 | * Load a ramdisk image with U-Boot header to the specified memory | |
42 | * address. | |
43 | * | |
44 | * Returns the size of the loaded image on success, -1 otherwise. | |
45 | */ | |
46 | int load_ramdisk(const char *filename, hwaddr addr, uint64_t max_sz); | |
47 | ||
725e14e9 | 48 | ssize_t read_targphys(const char *name, |
a8170e5e | 49 | int fd, hwaddr dst_addr, size_t nbytes); |
3c178e72 | 50 | void pstrcpy_targphys(const char *name, |
a8170e5e | 51 | hwaddr dest, int buf_size, |
ca20cf32 | 52 | const char *source); |
45a50b16 | 53 | |
ac41881b | 54 | extern bool option_rom_has_mr; |
98bc3ab0 | 55 | extern bool rom_file_has_mr; |
bdb5ee30 GH |
56 | |
57 | int rom_add_file(const char *file, const char *fw_dir, | |
ac41881b MT |
58 | hwaddr addr, int32_t bootindex, |
59 | bool option_rom); | |
48354cc5 MT |
60 | void *rom_add_blob(const char *name, const void *blob, size_t len, |
61 | hwaddr addr, const char *fw_file_name, | |
62 | FWCfgReadCallback fw_callback, void *callback_opaque); | |
d60fa42e FC |
63 | int rom_add_elf_program(const char *name, void *data, size_t datasize, |
64 | size_t romsize, hwaddr addr); | |
45a50b16 | 65 | int rom_load_all(void); |
d916b464 | 66 | void rom_load_done(void); |
a88b362c | 67 | void rom_set_fw(FWCfgState *f); |
a8170e5e AK |
68 | int rom_copy(uint8_t *dest, hwaddr addr, size_t size); |
69 | void *rom_ptr(hwaddr addr); | |
84f2d0ea | 70 | void do_info_roms(Monitor *mon, const QDict *qdict); |
45a50b16 | 71 | |
2e55e842 | 72 | #define rom_add_file_fixed(_f, _a, _i) \ |
ac41881b | 73 | rom_add_file(_f, NULL, _a, _i, false) |
45a50b16 | 74 | #define rom_add_blob_fixed(_f, _b, _l, _a) \ |
fe1479aa | 75 | rom_add_blob(_f, _b, _l, _a, NULL, NULL, NULL) |
45a50b16 GH |
76 | |
77 | #define PC_ROM_MIN_VGA 0xc0000 | |
78 | #define PC_ROM_MIN_OPTION 0xc8000 | |
79 | #define PC_ROM_MAX 0xe0000 | |
80 | #define PC_ROM_ALIGN 0x800 | |
81 | #define PC_ROM_SIZE (PC_ROM_MAX - PC_ROM_MIN_VGA) | |
82 | ||
de2aff17 | 83 | int rom_add_vga(const char *file); |
2e55e842 | 84 | int rom_add_option(const char *file, int32_t bootindex); |
45a50b16 | 85 | |
ca20cf32 | 86 | #endif |