summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJi Luo <ji.luo@nxp.com>2020-11-05 17:00:44 +0800
committerJi Luo <ji.luo@nxp.com>2020-11-06 10:50:35 +0800
commit2062183df063e0653e9e88a690764647702af7dd (patch)
treeb73e22aea44a0b66f9f2cd074dc1dacd7b86c3b0 /lib
parentb414e6dfc20ec6430ab1069139d59e11dff0f5dd (diff)
MA-18221 Fix build break for imx7ulp
GCC for arm32 doesn't support division between signed and unsigned integer. Clean up the code to use 'long' for both arm32 and arm64 platforms. Test: build on 7ulp and 8mm. Change-Id: I21c23b1948994558237b27bfe7452e78e3d45172 Signed-off-by: Ji Luo <ji.luo@nxp.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/avb/fsl/utils.c21
-rw-r--r--lib/avb/fsl/utils.h4
2 files changed, 12 insertions, 13 deletions
diff --git a/lib/avb/fsl/utils.c b/lib/avb/fsl/utils.c
index 64176a04e3..86c565a130 100644
--- a/lib/avb/fsl/utils.c
+++ b/lib/avb/fsl/utils.c
@@ -14,8 +14,8 @@
* get margin_pos struct from offset [to the partition start/end] and
* num_bytes to read/write
*/
-int get_margin_pos(uint64_t part_start, uint64_t part_end, unsigned long blksz,
- margin_pos_t *margin, int64_t offset, size_t num_bytes,
+int get_margin_pos(long part_start, long part_end, long blksz,
+ margin_pos_t *margin, long offset, size_t num_bytes,
bool allow_partial) {
long off;
if (margin == NULL)
@@ -25,9 +25,9 @@ int get_margin_pos(uint64_t part_start, uint64_t part_end, unsigned long blksz,
return -1;
if (offset < 0) {
- margin->blk_start = (offset + 1) / (int64_t)blksz + part_end;
+ margin->blk_start = (offset + 1) / blksz + part_end;
// offset == -1 means the last byte?, or start need -1
- margin->start = (off = offset % (int64_t)blksz) == 0 ?
+ margin->start = (off = offset % blksz) == 0 ?
0 : blksz + off;
if (offset + num_bytes - 1 >= 0) {
if (!allow_partial)
@@ -37,17 +37,16 @@ int get_margin_pos(uint64_t part_start, uint64_t part_end, unsigned long blksz,
} else {
// which blk the last byte is in
margin->blk_end = (num_bytes + offset) /
- (int64_t)blksz + part_end;
- margin->end = (off = (num_bytes + offset - 1) %
- (int64_t)blksz) == 0 ?
+ blksz + part_end;
+ margin->end = (off = (num_bytes + offset - 1) % blksz) == 0 ?
0 : blksz + off; // last byte
}
} else {
- margin->blk_start = offset / (uint64_t)blksz + part_start;
- margin->start = offset % (uint64_t)blksz;
- margin->blk_end = ((offset + num_bytes - 1) / (uint64_t)blksz) +
+ margin->blk_start = offset / blksz + part_start;
+ margin->start = offset % blksz;
+ margin->blk_end = ((offset + num_bytes - 1) / blksz) +
part_start ;
- margin->end = (offset + num_bytes - 1) % (uint64_t)blksz;
+ margin->end = (offset + num_bytes - 1) % blksz;
if (margin->blk_end > part_end) {
if (!allow_partial)
return -1;
diff --git a/lib/avb/fsl/utils.h b/lib/avb/fsl/utils.h
index 698aec0dc3..1a630bfa4e 100644
--- a/lib/avb/fsl/utils.h
+++ b/lib/avb/fsl/utils.h
@@ -25,8 +25,8 @@ struct margin_pos {
};
typedef struct margin_pos margin_pos_t;
-int get_margin_pos(uint64_t part_start, uint64_t part_end, unsigned long blksz,
- margin_pos_t *margin, int64_t offset, size_t num_bytes,
+int get_margin_pos(long part_start, long part_end, long blksz,
+ margin_pos_t *margin, long offset, size_t num_bytes,
bool allow_partial);
int read_from_partition_in_bytes(struct blk_desc *fs_dev_desc,