]>
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); |
7d48a0f7 LE |
19 | |
20 | /* This is the limit on the maximum uncompressed image size that | |
21 | * load_image_gzipped_buffer() and load_image_gzipped() will read. It prevents | |
22 | * g_malloc() in those functions from allocating a huge amount of memory. | |
23 | */ | |
24 | #define LOAD_IMAGE_MAX_GUNZIP_BYTES (256 << 20) | |
25 | ||
26 | int load_image_gzipped_buffer(const char *filename, uint64_t max_sz, | |
27 | uint8_t **buffer); | |
235e74af | 28 | int load_image_gzipped(const char *filename, hwaddr addr, uint64_t max_sz); |
18674b26 AK |
29 | |
30 | #define ELF_LOAD_FAILED -1 | |
31 | #define ELF_LOAD_NOT_ELF -2 | |
32 | #define ELF_LOAD_WRONG_ARCH -3 | |
33 | #define ELF_LOAD_WRONG_ENDIAN -4 | |
34 | const char *load_elf_strerror(int error); | |
409dbce5 AJ |
35 | int load_elf(const char *filename, uint64_t (*translate_fn)(void *, uint64_t), |
36 | void *translate_opaque, uint64_t *pentry, uint64_t *lowaddr, | |
37 | uint64_t *highaddr, int big_endian, int elf_machine, | |
38 | int clear_lsb); | |
a8170e5e AK |
39 | int load_aout(const char *filename, hwaddr addr, int max_sz, |
40 | int bswap_needed, hwaddr target_page_size); | |
41 | int load_uimage(const char *filename, hwaddr *ep, | |
25bda50a MF |
42 | hwaddr *loadaddr, int *is_linux, |
43 | uint64_t (*translate_fn)(void *, uint64_t), | |
44 | void *translate_opaque); | |
ca20cf32 | 45 | |
84aee0de SB |
46 | /** |
47 | * load_ramdisk: | |
48 | * @filename: Path to the ramdisk image | |
49 | * @addr: Memory address to load the ramdisk to | |
50 | * @max_sz: Maximum allowed ramdisk size (for non-u-boot ramdisks) | |
51 | * | |
52 | * Load a ramdisk image with U-Boot header to the specified memory | |
53 | * address. | |
54 | * | |
55 | * Returns the size of the loaded image on success, -1 otherwise. | |
56 | */ | |
57 | int load_ramdisk(const char *filename, hwaddr addr, uint64_t max_sz); | |
58 | ||
725e14e9 | 59 | ssize_t read_targphys(const char *name, |
a8170e5e | 60 | int fd, hwaddr dst_addr, size_t nbytes); |
3c178e72 | 61 | void pstrcpy_targphys(const char *name, |
a8170e5e | 62 | hwaddr dest, int buf_size, |
ca20cf32 | 63 | const char *source); |
45a50b16 | 64 | |
ac41881b | 65 | extern bool option_rom_has_mr; |
98bc3ab0 | 66 | extern bool rom_file_has_mr; |
bdb5ee30 GH |
67 | |
68 | int rom_add_file(const char *file, const char *fw_dir, | |
ac41881b MT |
69 | hwaddr addr, int32_t bootindex, |
70 | bool option_rom); | |
339240b5 PB |
71 | MemoryRegion *rom_add_blob(const char *name, const void *blob, size_t len, |
72 | size_t max_len, hwaddr addr, | |
73 | const char *fw_file_name, | |
74 | FWCfgReadCallback fw_callback, | |
75 | void *callback_opaque); | |
d60fa42e FC |
76 | int rom_add_elf_program(const char *name, void *data, size_t datasize, |
77 | size_t romsize, hwaddr addr); | |
45a50b16 | 78 | int rom_load_all(void); |
d916b464 | 79 | void rom_load_done(void); |
a88b362c | 80 | void rom_set_fw(FWCfgState *f); |
a8170e5e AK |
81 | int rom_copy(uint8_t *dest, hwaddr addr, size_t size); |
82 | void *rom_ptr(hwaddr addr); | |
1ce6be24 | 83 | void hmp_info_roms(Monitor *mon, const QDict *qdict); |
45a50b16 | 84 | |
2e55e842 | 85 | #define rom_add_file_fixed(_f, _a, _i) \ |
ac41881b | 86 | rom_add_file(_f, NULL, _a, _i, false) |
45a50b16 | 87 | #define rom_add_blob_fixed(_f, _b, _l, _a) \ |
a1666142 | 88 | rom_add_blob(_f, _b, _l, _l, _a, NULL, NULL, NULL) |
45a50b16 GH |
89 | |
90 | #define PC_ROM_MIN_VGA 0xc0000 | |
91 | #define PC_ROM_MIN_OPTION 0xc8000 | |
92 | #define PC_ROM_MAX 0xe0000 | |
93 | #define PC_ROM_ALIGN 0x800 | |
94 | #define PC_ROM_SIZE (PC_ROM_MAX - PC_ROM_MIN_VGA) | |
95 | ||
de2aff17 | 96 | int rom_add_vga(const char *file); |
2e55e842 | 97 | int rom_add_option(const char *file, int32_t bootindex); |
45a50b16 | 98 | |
ca20cf32 | 99 | #endif |