]>
Commit | Line | Data |
---|---|---|
1 | #ifndef LOADER_H | |
2 | #define LOADER_H | |
3 | #include "qapi/qmp/qdict.h" | |
4 | #include "hw/nvram/fw_cfg.h" | |
5 | ||
6 | /* loader.c */ | |
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 | */ | |
14 | int get_image_size(const char *filename); | |
15 | int load_image(const char *filename, uint8_t *addr); /* deprecated */ | |
16 | int load_image_targphys(const char *filename, hwaddr, | |
17 | uint64_t max_sz); | |
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); | |
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); | |
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); | |
32 | ||
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 | ||
46 | ssize_t read_targphys(const char *name, | |
47 | int fd, hwaddr dst_addr, size_t nbytes); | |
48 | void pstrcpy_targphys(const char *name, | |
49 | hwaddr dest, int buf_size, | |
50 | const char *source); | |
51 | ||
52 | extern bool option_rom_has_mr; | |
53 | extern bool rom_file_has_mr; | |
54 | ||
55 | int rom_add_file(const char *file, const char *fw_dir, | |
56 | hwaddr addr, int32_t bootindex, | |
57 | bool option_rom); | |
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); | |
61 | int rom_add_elf_program(const char *name, void *data, size_t datasize, | |
62 | size_t romsize, hwaddr addr); | |
63 | int rom_load_all(void); | |
64 | void rom_load_done(void); | |
65 | void rom_set_fw(FWCfgState *f); | |
66 | int rom_copy(uint8_t *dest, hwaddr addr, size_t size); | |
67 | void *rom_ptr(hwaddr addr); | |
68 | void do_info_roms(Monitor *mon, const QDict *qdict); | |
69 | ||
70 | #define rom_add_file_fixed(_f, _a, _i) \ | |
71 | rom_add_file(_f, NULL, _a, _i, false) | |
72 | #define rom_add_blob_fixed(_f, _b, _l, _a) \ | |
73 | rom_add_blob(_f, _b, _l, _a, NULL, NULL, NULL) | |
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 | ||
81 | int rom_add_vga(const char *file); | |
82 | int rom_add_option(const char *file, int32_t bootindex); | |
83 | ||
84 | #endif |