libs/libc/hex2bin: enhance 64-bit compatibility
Signed-off-by: chao an <anchao@xiaomi.com>
This commit is contained in:
parent
52c0e6b576
commit
60c4d61c02
@ -100,8 +100,8 @@ extern "C"
|
|||||||
struct lib_instream_s;
|
struct lib_instream_s;
|
||||||
struct lib_sostream_s;
|
struct lib_sostream_s;
|
||||||
int hex2bin(FAR struct lib_instream_s *instream,
|
int hex2bin(FAR struct lib_instream_s *instream,
|
||||||
FAR struct lib_sostream_s *outstream, uint32_t baseaddr,
|
FAR struct lib_sostream_s *outstream, unsigned long baseaddr,
|
||||||
uint32_t endpaddr, enum hex2bin_swap_e swap);
|
unsigned long endpaddr, enum hex2bin_swap_e swap);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* Name: hex2mem
|
* Name: hex2mem
|
||||||
@ -127,7 +127,7 @@ int hex2bin(FAR struct lib_instream_s *instream,
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int hex2mem(int fd, uint32_t baseaddr, uint32_t endpaddr,
|
int hex2mem(int fd, unsigned long baseaddr, unsigned long endpaddr,
|
||||||
enum hex2bin_swap_e swap);
|
enum hex2bin_swap_e swap);
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
@ -154,8 +154,8 @@ int hex2mem(int fd, uint32_t baseaddr, uint32_t endpaddr,
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int fhex2mem(FAR FILE *instream, uint32_t baseaddr, uint32_t endpaddr,
|
int fhex2mem(FAR FILE *instream, unsigned long baseaddr,
|
||||||
enum hex2bin_swap_e swap);
|
unsigned long endpaddr, enum hex2bin_swap_e swap);
|
||||||
|
|
||||||
#undef EXTERN
|
#undef EXTERN
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -60,8 +60,8 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int fhex2mem(FAR FILE *instream, uint32_t baseaddr, uint32_t endpaddr,
|
int fhex2mem(FAR FILE *instream, unsigned long baseaddr,
|
||||||
enum hex2bin_swap_e swap)
|
unsigned long endpaddr, enum hex2bin_swap_e swap)
|
||||||
{
|
{
|
||||||
struct lib_stdinstream_s stdinstream;
|
struct lib_stdinstream_s stdinstream;
|
||||||
struct lib_memsostream_s memoutstream;
|
struct lib_memsostream_s memoutstream;
|
||||||
@ -81,7 +81,7 @@ int fhex2mem(FAR FILE *instream, uint32_t baseaddr, uint32_t endpaddr,
|
|||||||
/* And do the deed */
|
/* And do the deed */
|
||||||
|
|
||||||
return hex2bin(&stdinstream.public, &memoutstream.public,
|
return hex2bin(&stdinstream.public, &memoutstream.public,
|
||||||
(uint32_t)baseaddr, (uint32_t)endpaddr,
|
(unsigned long)baseaddr, (unsigned long)endpaddr,
|
||||||
(enum hex2bin_swap_e)swap);
|
(enum hex2bin_swap_e)swap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -378,18 +378,18 @@ static inline void writedata(FAR struct lib_sostream_s *outstream,
|
|||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int hex2bin(FAR struct lib_instream_s *instream,
|
int hex2bin(FAR struct lib_instream_s *instream,
|
||||||
FAR struct lib_sostream_s *outstream, uint32_t baseaddr,
|
FAR struct lib_sostream_s *outstream, unsigned long baseaddr,
|
||||||
uint32_t endpaddr, enum hex2bin_swap_e swap)
|
unsigned long endpaddr, enum hex2bin_swap_e swap)
|
||||||
{
|
{
|
||||||
FAR uint8_t *alloc;
|
FAR uint8_t *alloc;
|
||||||
FAR uint8_t *line;
|
FAR uint8_t *line;
|
||||||
FAR uint8_t *bin;
|
FAR uint8_t *bin;
|
||||||
int nbytes;
|
int nbytes;
|
||||||
int bytecount;
|
int bytecount;
|
||||||
uint32_t address;
|
unsigned long address;
|
||||||
uint32_t endaddr;
|
unsigned long endaddr;
|
||||||
uint32_t expected;
|
unsigned long expected;
|
||||||
uint32_t extension;
|
unsigned long extension;
|
||||||
uint16_t address16;
|
uint16_t address16;
|
||||||
uint8_t checksum;
|
uint8_t checksum;
|
||||||
unsigned int lineno;
|
unsigned int lineno;
|
||||||
@ -546,7 +546,7 @@ int hex2bin(FAR struct lib_instream_s *instream,
|
|||||||
|
|
||||||
/* Get and verify the full 32-bit address */
|
/* Get and verify the full 32-bit address */
|
||||||
|
|
||||||
address = extension + (uint32_t)address16;
|
address = extension + (unsigned long)address16;
|
||||||
endaddr = address + bytecount;
|
endaddr = address + bytecount;
|
||||||
|
|
||||||
if (address < baseaddr || (endpaddr != 0 && endaddr >= endpaddr))
|
if (address < baseaddr || (endpaddr != 0 && endaddr >= endpaddr))
|
||||||
@ -621,7 +621,7 @@ int hex2bin(FAR struct lib_instream_s *instream,
|
|||||||
goto errout_with_einval;
|
goto errout_with_einval;
|
||||||
}
|
}
|
||||||
|
|
||||||
extension = (uint32_t)bin[DATA_BINNDX] << 12;
|
extension = (unsigned long)bin[DATA_BINNDX] << 12;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECORD_START_SEGADDR: /* Start segment address record */
|
case RECORD_START_SEGADDR: /* Start segment address record */
|
||||||
@ -654,8 +654,8 @@ int hex2bin(FAR struct lib_instream_s *instream,
|
|||||||
goto errout_with_einval;
|
goto errout_with_einval;
|
||||||
}
|
}
|
||||||
|
|
||||||
extension = (uint32_t)bin[DATA_BINNDX] << 24 |
|
extension = (unsigned long)bin[DATA_BINNDX] << 24 |
|
||||||
(uint32_t)bin[DATA_BINNDX + 1] << 16;
|
(unsigned long)bin[DATA_BINNDX + 1] << 16;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case RECORD_START_LINADDR: /* Start linear address record */
|
case RECORD_START_LINADDR: /* Start linear address record */
|
||||||
|
@ -60,7 +60,7 @@
|
|||||||
*
|
*
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
int hex2mem(int fd, uint32_t baseaddr, uint32_t endpaddr,
|
int hex2mem(int fd, unsigned long baseaddr, unsigned long endpaddr,
|
||||||
enum hex2bin_swap_e swap)
|
enum hex2bin_swap_e swap)
|
||||||
{
|
{
|
||||||
struct lib_rawinstream_s rawinstream;
|
struct lib_rawinstream_s rawinstream;
|
||||||
@ -81,7 +81,7 @@ int hex2mem(int fd, uint32_t baseaddr, uint32_t endpaddr,
|
|||||||
/* And do the deed */
|
/* And do the deed */
|
||||||
|
|
||||||
return hex2bin(&rawinstream.public, &memoutstream.public,
|
return hex2bin(&rawinstream.public, &memoutstream.public,
|
||||||
(uint32_t)baseaddr, (uint32_t)endpaddr,
|
(unsigned long)baseaddr, (unsigned long)endpaddr,
|
||||||
(enum hex2bin_swap_e)swap);
|
(enum hex2bin_swap_e)swap);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user