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