eal: fix build with icc
authorMichael Qiu <michael.qiu@intel.com>
Wed, 10 Dec 2014 10:46:42 +0000 (18:46 +0800)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 11 Dec 2014 00:42:02 +0000 (01:42 +0100)
lib/librte_eal/linuxapp/eal/eal.c(461): error #2259: non-pointer
conversion from "long long" to "void *" may lose significant bits
   RTE_PTR_ALIGN_CEIL((uintptr_t)addr, RTE_PGSIZE_16M);

The root cause is that "RTE_PGSIZE_16M" is defined as unsigned long long.
But in i686 platform "void *" is 32-bit.
It is safe to cast to size_t and make it works in both 32 & 64-bit
platform.

Signed-off-by: Michael Qiu <michael.qiu@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
lib/librte_eal/linuxapp/eal/eal.c

index 89f3b5e..2fb1acc 100644 (file)
@@ -458,7 +458,7 @@ eal_parse_base_virtaddr(const char *arg)
         * it can align to 2MB for x86. So this alignment can also be used
         * on x86 */
        internal_config.base_virtaddr =
-               RTE_PTR_ALIGN_CEIL((uintptr_t)addr, RTE_PGSIZE_16M);
+               RTE_PTR_ALIGN_CEIL((uintptr_t)addr, (size_t)RTE_PGSIZE_16M);
 
        return 0;
 }