From 7691e96ab12a0f95efa89c0aed54996f82c689cb Mon Sep 17 00:00:00 2001 From: Patrick Georgi Date: Sat, 17 Feb 2024 21:09:13 +0100 Subject: cbfstool: Support 64bit addresses for flat images SELF has the fields wired up for 64bit, but adding flat images cuts the upper half. Change-Id: I3b48b8face921e942fb0e01eace791ad3e1669a0 Signed-off-by: Patrick Georgi Reviewed-on: https://review.coreboot.org/c/coreboot/+/80576 Reviewed-by: ron minnich Tested-by: build bot (Jenkins) --- util/cbfstool/cbfs-mkpayload.c | 4 ++-- util/cbfstool/cbfstool.c | 8 ++++---- util/cbfstool/common.h | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'util') diff --git a/util/cbfstool/cbfs-mkpayload.c b/util/cbfstool/cbfs-mkpayload.c index 63c81a325ded..e9bcfbacebed 100644 --- a/util/cbfstool/cbfs-mkpayload.c +++ b/util/cbfstool/cbfs-mkpayload.c @@ -230,8 +230,8 @@ out: int parse_flat_binary_to_payload(const struct buffer *input, struct buffer *output, - uint32_t loadaddress, - uint32_t entrypoint, + uint64_t loadaddress, + uint64_t entrypoint, enum cbfs_compression algo) { comp_func_ptr compress; diff --git a/util/cbfstool/cbfstool.c b/util/cbfstool/cbfstool.c index e11cfbc12641..88bf22b6493d 100644 --- a/util/cbfstool/cbfstool.c +++ b/util/cbfstool/cbfstool.c @@ -57,7 +57,7 @@ static struct param { */ long long int baseaddress_input; uint32_t baseaddress_assigned; - uint32_t loadaddress; + uint64_t loadaddress; uint32_t headeroffset; /* * Input can be negative. It will be transformed to offset from start of region (if @@ -65,7 +65,7 @@ static struct param { */ long long int headeroffset_input; uint32_t headeroffset_assigned; - uint32_t entrypoint; + uint64_t entrypoint; uint32_t size; uint32_t alignment; uint32_t pagesize; @@ -2157,7 +2157,7 @@ int main(int argc, char **argv) param.baseaddress_assigned = 1; break; case 'l': - param.loadaddress = strtoul(optarg, &suffix, 0); + param.loadaddress = strtoull(optarg, &suffix, 0); if (!*optarg || (suffix && *suffix)) { ERROR("Invalid load address '%s'.\n", optarg); @@ -2165,7 +2165,7 @@ int main(int argc, char **argv) } break; case 'e': - param.entrypoint = strtoul(optarg, &suffix, 0); + param.entrypoint = strtoull(optarg, &suffix, 0); if (!*optarg || (suffix && *suffix)) { ERROR("Invalid entry point '%s'.\n", optarg); diff --git a/util/cbfstool/common.h b/util/cbfstool/common.h index d39f8fbfbd3e..498aae69c259 100644 --- a/util/cbfstool/common.h +++ b/util/cbfstool/common.h @@ -178,8 +178,8 @@ int parse_bzImage_to_payload(const struct buffer *input, char *cmdline, enum cbfs_compression algo); int parse_flat_binary_to_payload(const struct buffer *input, struct buffer *output, - uint32_t loadaddress, - uint32_t entrypoint, + uint64_t loadaddress, + uint64_t entrypoint, enum cbfs_compression algo); /* cbfs-mkstage.c */ int parse_elf_to_stage(const struct buffer *input, struct buffer *output, -- cgit v1.2.3