HV:lib:fix "signed/unsigned conversion without cast"

Misra C required signed/unsigned conversion with cast.

V1->V2:
  a.split patch to patch series

V2->V3:
  a.change the uint64_t type numeric constant's suffix from U to UL

Signed-off-by: Huihuang Shi <huihuang.shi@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
This commit is contained in:
Huihuang Shi 2018-07-03 18:43:00 +08:00 committed by lijinxia
parent 2ffa69cb9a
commit ac7ba6c47f
2 changed files with 14 additions and 12 deletions

View File

@ -44,7 +44,7 @@ typedef _Bool bool;
#endif #endif
#ifndef UINT64_MAX #ifndef UINT64_MAX
#define UINT64_MAX (-1UL) #define UINT64_MAX (0xffffffffffffffffUL)
#endif #endif
#endif /* ASSEMBLER */ #endif /* ASSEMBLER */

View File

@ -37,10 +37,11 @@ int udiv32(uint32_t dividend, uint32_t divisor, struct udiv_result *res)
{ {
/* initialize the result */ /* initialize the result */
res->q.dwords.low = res->r.dwords.low = 0; res->q.dwords.low = 0U;
res->r.dwords.low = 0U;
/* test for "division by 0" condition */ /* test for "division by 0" condition */
if (divisor == 0) { if (divisor == 0U) {
res->q.dwords.low = 0xffffffff; res->q.dwords.low = 0xffffffffU;
return !0; return !0;
} }
/* trivial case: divisor==dividend */ /* trivial case: divisor==dividend */
@ -66,15 +67,16 @@ int udiv64(uint64_t dividend, uint64_t divisor, struct udiv_result *res)
uint64_t bits; uint64_t bits;
/* initialize the result */ /* initialize the result */
res->q.qword = res->r.qword = 0; res->q.qword = 0UL;
res->r.qword = 0UL;
/* test for "division by 0" condition */ /* test for "division by 0" condition */
if (divisor == 0) { if (divisor == 0UL) {
res->q.qword = 0xffffffffffffffffull; res->q.qword = 0xffffffffffffffffUL;
return -1; return -1;
} }
/* trivial case: divisor==dividend */ /* trivial case: divisor==dividend */
if (divisor == dividend) { if (divisor == dividend) {
res->q.qword = 1; res->q.qword = 1UL;
return 0; return 0;
} }
/* trivial case: divisor>dividend */ /* trivial case: divisor>dividend */
@ -85,7 +87,7 @@ int udiv64(uint64_t dividend, uint64_t divisor, struct udiv_result *res)
/* simplified case: only 32 bit operands Note that the preconditions /* simplified case: only 32 bit operands Note that the preconditions
* for do_udiv32() are fulfilled, since the tests were made above. * for do_udiv32() are fulfilled, since the tests were made above.
*/ */
if (((divisor >> 32) == 0) && ((dividend >> 32) == 0)) if (((divisor >> 32UL) == 0UL) && ((dividend >> 32UL) == 0UL))
return do_udiv32((uint32_t) dividend, (uint32_t) divisor, res); return do_udiv32((uint32_t) dividend, (uint32_t) divisor, res);
/* dividend is always greater than or equal to the divisor. Neither /* dividend is always greater than or equal to the divisor. Neither
@ -103,9 +105,9 @@ int udiv64(uint64_t dividend, uint64_t divisor, struct udiv_result *res)
dividend -= divisor; dividend -= divisor;
res->q.qword |= mask; res->q.qword |= mask;
} }
divisor >>= 1; divisor >>= 1UL;
mask >>= 1; mask >>= 1UL;
} while ((bits-- != 0UL) && (dividend != 0)); } while ((bits-- != 0UL) && (dividend != 0UL));
res->r.qword = dividend; res->r.qword = dividend;
return 0; return 0;