diff --git a/drivers/intel/soc/stratix10/io/s10_memmap_qspi.c b/drivers/intel/soc/stratix10/io/s10_memmap_qspi.c index a0fc034..dcd1991 100644 --- a/drivers/intel/soc/stratix10/io/s10_memmap_qspi.c +++ b/drivers/intel/soc/stratix10/io/s10_memmap_qspi.c @@ -26,9 +26,9 @@ * valid. */ int in_use; - uintptr_t base; - size_t file_pos; - size_t size; + uintptr_t base; + unsigned long long file_pos; + unsigned long long size; } file_state_t; static file_state_t current_file = {0}; @@ -44,7 +44,7 @@ static int memmap_block_open(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); static int memmap_block_seek(io_entity_t *entity, int mode, - ssize_t offset); + signed long long offset); static int memmap_block_len(io_entity_t *entity, size_t *length); static int memmap_block_read(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); @@ -131,7 +131,8 @@ /* Seek to a particular file offset on the memmap device */ -static int memmap_block_seek(io_entity_t *entity, int mode, ssize_t offset) +static int memmap_block_seek(io_entity_t *entity, int mode, + signed long long offset) { int result = -ENOENT; file_state_t *fp; @@ -143,7 +144,8 @@ fp = (file_state_t *) entity->info; /* Assert that new file position is valid */ - assert((offset >= 0) && (offset < fp->size)); + assert((offset >= 0) && + ((unsigned long long)offset < fp->size)); /* Reset file position */ fp->file_pos = offset; @@ -171,7 +173,7 @@ size_t length, size_t *length_read) { file_state_t *fp; - size_t pos_after; + unsigned long long pos_after; assert(entity != NULL); assert(length_read != NULL); @@ -198,7 +200,7 @@ size_t length, size_t *length_written) { file_state_t *fp; - size_t pos_after; + unsigned long long pos_after; assert(entity != NULL); assert(length_written != NULL); diff --git a/drivers/io/io_block.c b/drivers/io/io_block.c index f190a43..5d45c2f 100644 --- a/drivers/io/io_block.c +++ b/drivers/io/io_block.c @@ -19,17 +19,17 @@ typedef struct { io_block_dev_spec_t *dev_spec; uintptr_t base; - size_t file_pos; - size_t size; + unsigned long long file_pos; + unsigned long long size; } block_dev_state_t; -#define is_power_of_2(x) ((x != 0) && ((x & (x - 1)) == 0)) +#define is_power_of_2(x) (((x) != 0U) && (((x) & ((x) - 1U)) == 0U)) io_type_t device_type_block(void); static int block_open(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); -static int block_seek(io_entity_t *entity, int mode, ssize_t offset); +static int block_seek(io_entity_t *entity, int mode, signed long long offset); static int block_read(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); static int block_write(io_entity_t *entity, const uintptr_t buffer, @@ -148,21 +148,21 @@ } /* parameter offset is relative address at here */ -static int block_seek(io_entity_t *entity, int mode, ssize_t offset) +static int block_seek(io_entity_t *entity, int mode, signed long long offset) { block_dev_state_t *cur; assert(entity->info != (uintptr_t)NULL); cur = (block_dev_state_t *)entity->info; - assert((offset >= 0) && (offset < cur->size)); + assert((offset >= 0) && ((unsigned long long)offset < cur->size)); switch (mode) { case IO_SEEK_SET: - cur->file_pos = offset; + cur->file_pos = (unsigned long long)offset; break; case IO_SEEK_CUR: - cur->file_pos += offset; + cur->file_pos += (unsigned long long)offset; break; default: return -EINVAL; @@ -270,7 +270,7 @@ buf = &(cur->dev_spec->buffer); block_size = cur->dev_spec->block_size; assert((length <= cur->size) && - (length > 0) && + (length > 0U) && (ops->read != 0)); /* @@ -279,7 +279,7 @@ * on the low level driver. */ count = 0; - for (left = length; left > 0; left -= nbytes) { + for (left = length; left > 0U; left -= nbytes) { /* * We must only request operations aligned to the block * size. Therefore if file_pos is not block-aligned, @@ -288,7 +288,7 @@ * similarly, the number of bytes requested must be a * block size multiple */ - skip = cur->file_pos & (block_size - 1); + skip = cur->file_pos & (block_size - 1U); /* * Calculate the block number containing file_pos @@ -296,7 +296,7 @@ */ lba = (cur->file_pos + cur->base) / block_size; - if (skip + left > buf->length) { + if ((skip + left) > buf->length) { /* * The underlying read buffer is too small to * read all the required data - limit to just @@ -311,7 +311,8 @@ * block size. */ request = skip + left; - request = (request + (block_size - 1)) & ~(block_size - 1); + request = (request + (block_size - 1U)) & + ~(block_size - 1U); } request = ops->read(lba, buf->offset, request); @@ -330,7 +331,7 @@ * the read data when copying to the user buffer. */ nbytes = request - skip; - padding = (nbytes > left) ? nbytes - left : 0; + padding = (nbytes > left) ? nbytes - left : 0U; nbytes -= padding; memcpy((void *)(buffer + count), @@ -381,7 +382,7 @@ buf = &(cur->dev_spec->buffer); block_size = cur->dev_spec->block_size; assert((length <= cur->size) && - (length > 0) && + (length > 0U) && (ops->read != 0) && (ops->write != 0)); @@ -391,7 +392,7 @@ * on the low level driver. */ count = 0; - for (left = length; left > 0; left -= nbytes) { + for (left = length; left > 0U; left -= nbytes) { /* * We must only request operations aligned to the block * size. Therefore if file_pos is not block-aligned, @@ -400,7 +401,7 @@ * similarly, the number of bytes requested must be a * block size multiple */ - skip = cur->file_pos & (block_size - 1); + skip = cur->file_pos & (block_size - 1U); /* * Calculate the block number containing file_pos @@ -408,7 +409,7 @@ */ lba = (cur->file_pos + cur->base) / block_size; - if (skip + left > buf->length) { + if ((skip + left) > buf->length) { /* * The underlying read buffer is too small to * read all the required data - limit to just @@ -423,7 +424,8 @@ * block size. */ request = skip + left; - request = (request + (block_size - 1)) & ~(block_size - 1); + request = (request + (block_size - 1U)) & + ~(block_size - 1U); } /* @@ -432,7 +434,7 @@ * of the current request. */ nbytes = request - skip; - padding = (nbytes > left) ? nbytes - left : 0; + padding = (nbytes > left) ? nbytes - left : 0U; nbytes -= padding; /* @@ -440,14 +442,14 @@ * some content and it means that we have to read before * writing */ - if (skip > 0 || padding > 0) { + if ((skip > 0U) || (padding > 0U)) { request = ops->read(lba, buf->offset, request); /* * The read may return size less than * requested. Round down to the nearest block * boundary */ - request &= ~(block_size-1); + request &= ~(block_size - 1U); if (request <= skip) { /* * We couldn't read enough bytes to jump over @@ -458,7 +460,7 @@ return -EIO; } nbytes = request - skip; - padding = (nbytes > left) ? nbytes - left : 0; + padding = (nbytes > left) ? nbytes - left : 0U; nbytes -= padding; } @@ -477,7 +479,7 @@ * buffer */ nbytes = request - skip; - padding = (nbytes > left) ? nbytes - left : 0; + padding = (nbytes > left) ? nbytes - left : 0U; nbytes -= padding; cur->file_pos += nbytes; @@ -505,7 +507,7 @@ assert(dev_info != NULL); result = allocate_dev_info(&info); - if (result) + if (result != 0) return -ENOENT; cur = (block_dev_state_t *)info->info; @@ -513,10 +515,10 @@ cur->dev_spec = (io_block_dev_spec_t *)dev_spec; buffer = &(cur->dev_spec->buffer); block_size = cur->dev_spec->block_size; - assert((block_size > 0) && - (is_power_of_2(block_size) != 0) && - ((buffer->offset % block_size) == 0) && - ((buffer->length % block_size) == 0)); + assert((block_size > 0U) && + (is_power_of_2(block_size) != 0U) && + ((buffer->offset % block_size) == 0U) && + ((buffer->length % block_size) == 0U)); *dev_info = info; /* cast away const */ (void)block_size; diff --git a/drivers/io/io_fip.c b/drivers/io/io_fip.c index 544b37d..5d49fff 100644 --- a/drivers/io/io_fip.c +++ b/drivers/io/io_fip.c @@ -304,7 +304,8 @@ } /* Seek past the FIP header into the Table of Contents */ - result = io_seek(backend_handle, IO_SEEK_SET, sizeof(fip_toc_header_t)); + result = io_seek(backend_handle, IO_SEEK_SET, + (signed long long)sizeof(fip_toc_header_t)); if (result != 0) { WARN("fip_file_open: failed to seek\n"); result = -ENOENT; @@ -389,7 +390,8 @@ /* Seek to the position in the FIP where the payload lives */ file_offset = fp->entry.offset_address + fp->file_pos; - result = io_seek(backend_handle, IO_SEEK_SET, file_offset); + result = io_seek(backend_handle, IO_SEEK_SET, + (signed long long)file_offset); if (result != 0) { WARN("fip_file_read: failed to seek\n"); result = -ENOENT; diff --git a/drivers/io/io_memmap.c b/drivers/io/io_memmap.c index 96590b6..eed50cc 100644 --- a/drivers/io/io_memmap.c +++ b/drivers/io/io_memmap.c @@ -23,10 +23,10 @@ /* Use the 'in_use' flag as any value for base and file_pos could be * valid. */ - int in_use; - uintptr_t base; - size_t file_pos; - size_t size; + int in_use; + uintptr_t base; + unsigned long long file_pos; + unsigned long long size; } file_state_t; static file_state_t current_file = {0}; @@ -42,7 +42,7 @@ static int memmap_block_open(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); static int memmap_block_seek(io_entity_t *entity, int mode, - ssize_t offset); + signed long long offset); static int memmap_block_len(io_entity_t *entity, size_t *length); static int memmap_block_read(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); @@ -129,7 +129,8 @@ /* Seek to a particular file offset on the memmap device */ -static int memmap_block_seek(io_entity_t *entity, int mode, ssize_t offset) +static int memmap_block_seek(io_entity_t *entity, int mode, + signed long long offset) { int result = -ENOENT; file_state_t *fp; @@ -141,10 +142,11 @@ fp = (file_state_t *) entity->info; /* Assert that new file position is valid */ - assert((offset >= 0) && (offset < fp->size)); + assert((offset >= 0) && + ((unsigned long long)offset < fp->size)); /* Reset file position */ - fp->file_pos = offset; + fp->file_pos = (unsigned long long)offset; result = 0; } @@ -158,7 +160,7 @@ assert(entity != NULL); assert(length != NULL); - *length = ((file_state_t *)entity->info)->size; + *length = (size_t)((file_state_t *)entity->info)->size; return 0; } @@ -169,7 +171,7 @@ size_t length, size_t *length_read) { file_state_t *fp; - size_t pos_after; + unsigned long long pos_after; assert(entity != NULL); assert(length_read != NULL); @@ -180,7 +182,8 @@ pos_after = fp->file_pos + length; assert((pos_after >= fp->file_pos) && (pos_after <= fp->size)); - memcpy((void *)buffer, (void *)(fp->base + fp->file_pos), length); + memcpy((void *)buffer, + (void *)((uintptr_t)(fp->base + fp->file_pos)), length); *length_read = length; @@ -196,7 +199,7 @@ size_t length, size_t *length_written) { file_state_t *fp; - size_t pos_after; + unsigned long long pos_after; assert(entity != NULL); assert(length_written != NULL); @@ -207,7 +210,8 @@ pos_after = fp->file_pos + length; assert((pos_after >= fp->file_pos) && (pos_after <= fp->size)); - memcpy((void *)(fp->base + fp->file_pos), (void *)buffer, length); + memcpy((void *)((uintptr_t)(fp->base + fp->file_pos)), + (void *)buffer, length); *length_written = length; diff --git a/drivers/io/io_semihosting.c b/drivers/io/io_semihosting.c index 23d09c1..4ceddc6 100644 --- a/drivers/io/io_semihosting.c +++ b/drivers/io/io_semihosting.c @@ -25,7 +25,7 @@ static int sh_dev_open(const uintptr_t dev_spec, io_dev_info_t **dev_info); static int sh_file_open(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); -static int sh_file_seek(io_entity_t *entity, int mode, ssize_t offset); +static int sh_file_seek(io_entity_t *entity, int mode, signed long long offset); static int sh_file_len(io_entity_t *entity, size_t *length); static int sh_file_read(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); @@ -90,7 +90,7 @@ /* Seek to a particular file offset on the semi-hosting device */ -static int sh_file_seek(io_entity_t *entity, int mode, ssize_t offset) +static int sh_file_seek(io_entity_t *entity, int mode, signed long long offset) { long file_handle, sh_result; @@ -98,7 +98,7 @@ file_handle = (long)entity->info; - sh_result = semihosting_file_seek(file_handle, offset); + sh_result = semihosting_file_seek(file_handle, (ssize_t)offset); return (sh_result == 0) ? 0 : -ENOENT; } diff --git a/drivers/io/io_storage.c b/drivers/io/io_storage.c index e444f87..b8c1d64 100644 --- a/drivers/io/io_storage.c +++ b/drivers/io/io_storage.c @@ -237,7 +237,7 @@ /* Seek to a specific position in an IO entity */ -int io_seek(uintptr_t handle, io_seek_mode_t mode, ssize_t offset) +int io_seek(uintptr_t handle, io_seek_mode_t mode, signed long long offset) { int result = -ENODEV; assert(is_valid_entity(handle) && is_valid_seek_mode(mode)); diff --git a/drivers/renesas/rcar/io/io_emmcdrv.c b/drivers/renesas/rcar/io/io_emmcdrv.c index 4b464fb..84240d2 100644 --- a/drivers/renesas/rcar/io/io_emmcdrv.c +++ b/drivers/renesas/rcar/io/io_emmcdrv.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2017, Renesas Electronics Corporation. All rights reserved. + * Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -25,7 +25,7 @@ typedef struct { uint32_t in_use; uintptr_t base; - ssize_t file_pos; + signed long long file_pos; EMMC_PARTITION_ID partition; } file_state_t; @@ -39,7 +39,7 @@ } static int32_t emmcdrv_block_seek(io_entity_t *entity, int32_t mode, - ssize_t offset) + signed long long offset) { if (mode != IO_SEEK_SET) return IO_FAIL; @@ -59,12 +59,12 @@ sector_add = current_file.file_pos >> EMMC_SECTOR_SIZE_SHIFT; sector_num = (length + EMMC_SECTOR_SIZE - 1U) >> EMMC_SECTOR_SIZE_SHIFT; - NOTICE("BL2: Load dst=0x%lx src=(p:%d)0x%lx(%d) len=0x%lx(%d)\n", + NOTICE("BL2: Load dst=0x%lx src=(p:%d)0x%llx(%d) len=0x%lx(%d)\n", buffer, current_file.partition, current_file.file_pos, sector_add, length, sector_num); - if (buffer + length - 1 <= UINT32_MAX) + if ((buffer + length - 1U) <= (uintptr_t)UINT32_MAX) emmc_dma = LOADIMAGE_FLAGS_DMA_ENABLE; if (emmc_read_sector((uint32_t *) buffer, sector_add, sector_num, @@ -72,7 +72,7 @@ result = IO_FAIL; *length_read = length; - fp->file_pos += length; + fp->file_pos += (signed long long)length; return result; } @@ -82,7 +82,7 @@ { const io_drv_spec_t *block_spec = (io_drv_spec_t *) spec; - if (current_file.in_use) { + if (current_file.in_use != 0U) { WARN("mmc_block: Only one open spec at a time\n"); return IO_RESOURCES_EXHAUSTED; } @@ -103,9 +103,9 @@ return IO_FAIL; } - if (PARTITION_ID_USER == block_spec->partition || - PARTITION_ID_BOOT_1 == block_spec->partition || - PARTITION_ID_BOOT_2 == block_spec->partition) + if ((PARTITION_ID_USER == block_spec->partition) || + (PARTITION_ID_BOOT_1 == block_spec->partition) || + (PARTITION_ID_BOOT_2 == block_spec->partition)) current_file.partition = block_spec->partition; else current_file.partition = emmcdrv_bootpartition; diff --git a/drivers/renesas/rcar/io/io_memdrv.c b/drivers/renesas/rcar/io/io_memdrv.c index 3f6b4c7..7e8c1d3 100644 --- a/drivers/renesas/rcar/io/io_memdrv.c +++ b/drivers/renesas/rcar/io/io_memdrv.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015-2018, Renesas Electronics Corporation. All rights reserved. + * Copyright (c) 2015-2019, Renesas Electronics Corporation. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -28,7 +28,7 @@ typedef struct { uint32_t in_use; uintptr_t base; - ssize_t file_pos; + signed long long file_pos; } file_state_t; static file_state_t current_file = { 0 }; @@ -47,7 +47,7 @@ * spec at a time. When we have dynamic memory we can malloc and set * entity->info. */ - if (current_file.in_use) + if (current_file.in_use != 0U) return IO_RESOURCES_EXHAUSTED; /* File cursor offset for seek and incremental reads etc. */ @@ -61,7 +61,7 @@ } static int32_t memdrv_block_seek(io_entity_t *entity, int32_t mode, - ssize_t offset) + signed long long offset) { if (mode != IO_SEEK_SET) return IO_FAIL; @@ -78,16 +78,17 @@ fp = (file_state_t *) entity->info; - NOTICE("BL2: dst=0x%lx src=0x%lx len=%ld(0x%lx)\n", - buffer, fp->base + fp->file_pos, length, length); + NOTICE("BL2: dst=0x%lx src=0x%llx len=%ld(0x%lx)\n", + buffer, (unsigned long long)fp->base + + (unsigned long long)fp->file_pos, length, length); - if (FLASH_MEMORY_SIZE < fp->file_pos + length) { + if (FLASH_MEMORY_SIZE < (fp->file_pos + (signed long long)length)) { ERROR("BL2: check load image (source address)\n"); return IO_FAIL; } - rcar_dma_exec(buffer, fp->base + fp->file_pos, length); - fp->file_pos += length; + rcar_dma_exec(buffer, fp->base + (uintptr_t)fp->file_pos, length); + fp->file_pos += (signed long long)length; *cnt = length; return IO_SUCCESS; diff --git a/drivers/st/io/io_mmc.c b/drivers/st/io/io_mmc.c index a239b5f..44b7d19 100644 --- a/drivers/st/io/io_mmc.c +++ b/drivers/st/io/io_mmc.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, ARM Limited and Contributors. All rights reserved. + * Copyright (c) 2018-2019, ARM Limited and Contributors. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause */ @@ -20,14 +20,15 @@ static int mmc_block_open(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); static int mmc_dev_init(io_dev_info_t *dev_info, const uintptr_t init_params); -static int mmc_block_seek(io_entity_t *entity, int mode, ssize_t offset); +static int mmc_block_seek(io_entity_t *entity, int mode, + signed long long offset); static int mmc_block_read(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); static int mmc_block_close(io_entity_t *entity); static int mmc_dev_close(io_dev_info_t *dev_info); static io_type_t device_type_mmc(void); -static ssize_t seek_offset; +static signed long long seek_offset; static const io_dev_connector_t mmc_dev_connector = { .dev_open = mmc_dev_open @@ -85,7 +86,8 @@ } /* Seek to a particular file offset on the mmc device */ -static int mmc_block_seek(io_entity_t *entity, int mode, ssize_t offset) +static int mmc_block_seek(io_entity_t *entity, int mode, + signed long long offset) { seek_offset = offset; return 0; diff --git a/include/drivers/io/io_driver.h b/include/drivers/io/io_driver.h index 2b704f4..d8bb435 100644 --- a/include/drivers/io/io_driver.h +++ b/include/drivers/io/io_driver.h @@ -39,7 +39,7 @@ io_type_t (*type)(void); int (*open)(io_dev_info_t *dev_info, const uintptr_t spec, io_entity_t *entity); - int (*seek)(io_entity_t *entity, int mode, ssize_t offset); + int (*seek)(io_entity_t *entity, int mode, signed long long offset); int (*size)(io_entity_t *entity, size_t *length); int (*read)(io_entity_t *entity, uintptr_t buffer, size_t length, size_t *length_read); diff --git a/include/drivers/io/io_storage.h b/include/drivers/io/io_storage.h index 084c67c..d40a828 100644 --- a/include/drivers/io/io_storage.h +++ b/include/drivers/io/io_storage.h @@ -86,7 +86,7 @@ /* Synchronous operations */ int io_open(uintptr_t dev_handle, const uintptr_t spec, uintptr_t *handle); -int io_seek(uintptr_t handle, io_seek_mode_t mode, ssize_t offset); +int io_seek(uintptr_t handle, io_seek_mode_t mode, signed long long offset); int io_size(uintptr_t handle, size_t *length);