From e08e6ea67d91af6e2c423f5248aaedb82088b897 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 28 Jan 2023 15:00:22 -0700 Subject: [PATCH] qemu: Update qfw command to use addresses This uses casts all over the place. Use the correct type so that these can be avoided, as is done with other commands. Also simplify a few conditionals. Signed-off-by: Simon Glass --- cmd/qfw.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/cmd/qfw.c b/cmd/qfw.c index 0c49c6074e..8837911d99 100644 --- a/cmd/qfw.c +++ b/cmd/qfw.c @@ -7,6 +7,7 @@ #include #include #include +#include #include #include @@ -17,7 +18,7 @@ static struct udevice *qfw_dev; * to 'load_addr', initrd to 'initrd_addr' and kernel command * line using qemu fw_cfg interface. */ -static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) +int qemu_fwcfg_cmd_setup_kernel(ulong load_addr, ulong initrd_addr) { char *data_addr; uint32_t setup_size, kernel_size, cmdline_size, initrd_size; @@ -25,13 +26,13 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) qfw_read_entry(qfw_dev, FW_CFG_SETUP_SIZE, 4, &setup_size); qfw_read_entry(qfw_dev, FW_CFG_KERNEL_SIZE, 4, &kernel_size); - if (kernel_size == 0) { + if (!kernel_size) { printf("fatal: no kernel available\n"); - return CMD_RET_FAILURE; + return -ENOENT; } - data_addr = load_addr; - if (setup_size != 0) { + data_addr = map_sysmem(load_addr, 0); + if (setup_size) { qfw_read_entry(qfw_dev, FW_CFG_SETUP_DATA, le32_to_cpu(setup_size), data_addr); data_addr += le32_to_cpu(setup_size); @@ -42,9 +43,9 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) data_addr += le32_to_cpu(kernel_size); env_set_hex("filesize", le32_to_cpu(kernel_size)); - data_addr = initrd_addr; + data_addr = map_sysmem(initrd_addr, 0); qfw_read_entry(qfw_dev, FW_CFG_INITRD_SIZE, 4, &initrd_size); - if (initrd_size == 0) { + if (!initrd_size) { printf("warning: no initrd available\n"); } else { qfw_read_entry(qfw_dev, FW_CFG_INITRD_DATA, @@ -61,17 +62,16 @@ static int qemu_fwcfg_cmd_setup_kernel(void *load_addr, void *initrd_addr) * if kernel cmdline only contains '\0', (e.g. no -append * when invoking qemu), do not update bootargs */ - if (*data_addr != '\0') { + if (*data_addr) { if (env_set("bootargs", data_addr) < 0) printf("warning: unable to change bootargs\n"); } } - printf("loading kernel to address %p size %x", load_addr, + printf("loading kernel to address %lx size %x", load_addr, le32_to_cpu(kernel_size)); if (initrd_size) - printf(" initrd %p size %x\n", - initrd_addr, + printf(" initrd %lx size %x\n", initrd_addr, le32_to_cpu(initrd_size)); else printf("\n"); @@ -119,28 +119,28 @@ static int qemu_fwcfg_do_load(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[]) { char *env; - void *load_addr; - void *initrd_addr; + ulong load_addr; + ulong initrd_addr; env = env_get("loadaddr"); load_addr = env ? - (void *)hextoul(env, NULL) : - (void *)CONFIG_SYS_LOAD_ADDR; + hextoul(env, NULL) : + CONFIG_SYS_LOAD_ADDR; env = env_get("ramdiskaddr"); initrd_addr = env ? - (void *)hextoul(env, NULL) : + hextoul(env, NULL) : #ifdef CFG_RAMDISK_ADDR - (void *)CFG_RAMDISK_ADDR; + CFG_RAMDISK_ADDR; #else - NULL; + 0; #endif if (argc == 2) { - load_addr = (void *)hextoul(argv[0], NULL); - initrd_addr = (void *)hextoul(argv[1], NULL); + load_addr = hextoul(argv[0], NULL); + initrd_addr = hextoul(argv[1], NULL); } else if (argc == 1) { - load_addr = (void *)hextoul(argv[0], NULL); + load_addr = hextoul(argv[0], NULL); } if (!load_addr || !initrd_addr) { -- 2.39.5