diff --git a/platform/linux-generic/include/odp_traffic_mngr_internal.h b/platform/linux-generic/include/odp_traffic_mngr_internal.h
index c2d5cf4..e48e213 100644
--- a/platform/linux-generic/include/odp_traffic_mngr_internal.h
+++ b/platform/linux-generic/include/odp_traffic_mngr_internal.h
@@ -48,8 +48,8 @@ typedef struct stat  file_stat_t;
 
 /* Macros to convert handles to internal pointers and vice versa. */
 
-#define MAKE_ODP_TM_HANDLE(tm_system)  ((odp_tm_t)tm_system)
-#define GET_TM_SYSTEM(odp_tm)          ((tm_system_t *)odp_tm)
+#define MAKE_ODP_TM_HANDLE(tm_system)  ((odp_tm_t)(uintptr_t)tm_system)
+#define GET_TM_SYSTEM(odp_tm)          ((tm_system_t *)(uintptr_t)odp_tm)
 
 #define MAKE_PROFILE_HANDLE(profile_kind, tbl_idx) \
 	(((profile_kind & 0xF) << 28) | ((tbl_idx + 1) & 0xFFFFFFF))
@@ -59,11 +59,14 @@ typedef struct stat  file_stat_t;
 
 #define GET_TBL_IDX(profile_handle)  ((profile_handle & 0xFFFFFFF) - 1)
 
-#define MAKE_ODP_TM_NODE(tm_node_obj)  ((odp_tm_node_t)(tm_node_obj))
-#define GET_TM_NODE_OBJ(odp_tm_node)   ((tm_node_obj_t *)(odp_tm_node))
+#define MAKE_ODP_TM_NODE(tm_node_obj) ((odp_tm_node_t)(uintptr_t)(tm_node_obj))
+#define GET_TM_NODE_OBJ(odp_tm_node) \
+	((tm_node_obj_t *)(uintptr_t)(odp_tm_node))
 
-#define MAKE_ODP_TM_QUEUE(tm_queue_obj)  ((odp_tm_queue_t)(tm_queue_obj))
-#define GET_TM_QUEUE_OBJ(odp_tm_queue)   ((tm_queue_obj_t *)(odp_tm_queue))
+#define MAKE_ODP_TM_QUEUE(tm_queue_obj) \
+	((odp_tm_queue_t)(uintptr_t)(tm_queue_obj))
+#define GET_TM_QUEUE_OBJ(odp_tm_queue) \
+	((tm_queue_obj_t *)(uintptr_t)(odp_tm_queue))
 
 typedef uint64_t tm_handle_t;
 
diff --git a/platform/linux-generic/odp_name_table.c b/platform/linux-generic/odp_name_table.c
index 10ce099..10a760e 100644
--- a/platform/linux-generic/odp_name_table.c
+++ b/platform/linux-generic/odp_name_table.c
@@ -567,7 +567,7 @@ static hash_tbl_entry_t make_hash_tbl_entry(name_tbl_entry_t *name_tbl_entry,
 	uint32_t         new_entry_cnt;
 
 	new_entry_cnt   = MIN(entry_cnt + 1, 0x3F);
-	hash_tbl_entry  = (hash_tbl_entry_t)name_tbl_entry;
+	hash_tbl_entry  = (hash_tbl_entry_t)(uintptr_t)name_tbl_entry;
 	hash_tbl_entry &= ~0x3F;
 	hash_tbl_entry |= new_entry_cnt;
 	return hash_tbl_entry;
@@ -584,18 +584,18 @@ static name_tbl_entry_t *name_hash_tbl_lookup(uint32_t hash_value)
 	if (hash_tbl_entry == 0)
 		return NULL;
 	else if ((hash_tbl_entry & 0x3F) != 0)
-		return (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		return (name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 
        /* This hash_tbl_entry references a secondary hash table, so get
 	* some more hash_value bits and index that table.
 	*/
 	hash_idx       = (hash_value >> 16) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	hash_tbl_entry = secondary_hash->hash_entries[hash_idx];
 	if (hash_tbl_entry == 0)
 		return NULL;
 	else if ((hash_tbl_entry & 0x3F) != 0)
-		return (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		return (name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 
        /* Yet again, this hash_tbl_entry references a secondary hash table,
 	* so get some more hash_value bits and index that table.  We only
@@ -604,12 +604,12 @@ static name_tbl_entry_t *name_hash_tbl_lookup(uint32_t hash_value)
 	* returning NULL.
 	*/
 	hash_idx       = (hash_value >> 24) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	hash_tbl_entry = secondary_hash->hash_entries[hash_idx];
 	if (hash_tbl_entry == 0)
 		return NULL;
 	else if ((hash_tbl_entry & 0x3F) != 0)
-		return (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		return (name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 
 	return NULL;
 }
@@ -655,7 +655,8 @@ static hash_tbl_entry_t secondary_hash_add(name_tbl_entry_t *name_tbl_entry,
 
 		hash_tbl_entry = secondary_hash->hash_entries[hash_idx];
 		entry_cnt      = hash_tbl_entry & 0x3F;
-		first_entry    = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		first_entry    =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 
 		name_tbl_entry->next_entry = first_entry;
 		new_hash_tbl_entry =
@@ -666,7 +667,7 @@ static hash_tbl_entry_t secondary_hash_add(name_tbl_entry_t *name_tbl_entry,
 	}
 
 	/* secondary_hash_dump(secondary_hash); */
-	return (hash_tbl_entry_t)secondary_hash;
+	return (hash_tbl_entry_t)(uintptr_t)secondary_hash;
 }
 
 static hash_tbl_entry_t hash_tbl_remove(secondary_hash_tbl_t *hash_tbl,
@@ -693,11 +694,11 @@ static hash_tbl_entry_t hash_tbl_remove(secondary_hash_tbl_t *hash_tbl,
 				 * new entry onto the front of it.
 				 */
 				head_entry = (name_tbl_entry_t *)
-					(hash_tbl_entry & ~0x3F);
+					(uintptr_t)(hash_tbl_entry & ~0x3F);
 				tail_entry = head_entry;
 			} else {
 				secondary_hash = (secondary_hash_tbl_t *)
-					hash_tbl_entry;
+					(uintptr_t)hash_tbl_entry;
 				check_secondary_hash(secondary_hash);
 				if (level == 1)
 					break;
@@ -758,7 +759,8 @@ static int name_hash_tbl_add(name_tbl_entry_t *entry_to_add,
 		/* This primary hash table entry points to a name_tbl_entry_t
 		 * linked list, so add this new entry onto the front of it.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		entry_to_add->next_entry = name_tbl_entry;
 		hash_tbl_entry = make_hash_tbl_entry(entry_to_add, entry_cnt);
 		name_hash_tbl.hash_entries[primary_hash_idx] = hash_tbl_entry;
@@ -783,7 +785,7 @@ static int name_hash_tbl_add(name_tbl_entry_t *entry_to_add,
 	* some more hash_value bits and index that table.
 	*/
 	hash_idx       = (hash_value >> 16) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	check_secondary_hash(secondary_hash);
 	hash_tbl_entry = secondary_hash->hash_entries[hash_idx];
 	entry_cnt      = hash_tbl_entry & 0x3F;
@@ -799,7 +801,8 @@ static int name_hash_tbl_add(name_tbl_entry_t *entry_to_add,
 		 * name_tbl_entry_t linked list, so add this new entry onto
 		 * the front of it.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		entry_to_add->next_entry = name_tbl_entry;
 		hash_tbl_entry = make_hash_tbl_entry(entry_to_add, entry_cnt);
 		secondary_hash->hash_entries[hash_idx] = hash_tbl_entry;
@@ -827,7 +830,7 @@ static int name_hash_tbl_add(name_tbl_entry_t *entry_to_add,
 	* signal failure by returning -1.
 	*/
 	hash_idx       = (hash_value >> 24) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	check_secondary_hash(secondary_hash);
 	hash_tbl_entry = secondary_hash->hash_entries[hash_idx];
 	entry_cnt      = hash_tbl_entry & 0x3F;
@@ -846,7 +849,8 @@ static int name_hash_tbl_add(name_tbl_entry_t *entry_to_add,
 		 * linked list, we never add another hash table, so we don't
 		 * need to update any secondary table counts.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		entry_to_add->next_entry = name_tbl_entry;
 		hash_tbl_entry = make_hash_tbl_entry(entry_to_add, entry_cnt);
 		secondary_hash->hash_entries[hash_idx] = hash_tbl_entry;
@@ -875,7 +879,8 @@ static int name_tbl_entry_list_remove(hash_tbl_entry_t *hash_entry_ptr,
 			 * deleted.
 			 */
 			if (!prev_entry) {
-				hash_tbl_entry  = (hash_tbl_entry_t)next_entry;
+				hash_tbl_entry  =
+					(hash_tbl_entry_t)(uintptr_t)next_entry;
 				hash_tbl_entry &= ~0x3F;
 				hash_tbl_entry |= entry_cnt;
 				*hash_entry_ptr = hash_tbl_entry;
@@ -922,7 +927,8 @@ static int name_hash_tbl_delete(name_tbl_entry_t *entry_to_delete,
 		/* This primary hash table entry points to a name_tbl_entry_t
 		 * linked list, so remove entry from this linked list.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		rc = name_tbl_entry_list_remove(hash_entry_ptr, name_tbl_entry,
 						entry_to_delete, entry_cnt);
 		tbn = (*hash_entry_ptr) & ~0x3F;
@@ -940,7 +946,7 @@ static int name_hash_tbl_delete(name_tbl_entry_t *entry_to_delete,
 	* some more hash_value bits and index that table.
 	*/
 	hash_idx       = (hash_value >> 16) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	check_secondary_hash(secondary_hash);
 	hash_entry_ptr = &secondary_hash->hash_entries[hash_idx];
 	hash_tbl_entry = *hash_entry_ptr;
@@ -955,7 +961,8 @@ static int name_hash_tbl_delete(name_tbl_entry_t *entry_to_delete,
 		 * name_tbl_entry_t linked list, so try to remove
 		 * entry_to_delete from this linked list.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		rc = name_tbl_entry_list_remove(hash_entry_ptr, name_tbl_entry,
 						entry_to_delete, entry_cnt);
 		tbn = (*hash_entry_ptr) & ~0x3F;
@@ -988,7 +995,7 @@ static int name_hash_tbl_delete(name_tbl_entry_t *entry_to_delete,
 	* signal failure by returning -1.
 	*/
 	hash_idx       = (hash_value >> 24) & (SECONDARY_HASH_TBL_SIZE - 1);
-	secondary_hash = (secondary_hash_tbl_t *)hash_tbl_entry;
+	secondary_hash = (secondary_hash_tbl_t *)(uintptr_t)hash_tbl_entry;
 	check_secondary_hash(secondary_hash);
 	hash_entry_ptr = &secondary_hash->hash_entries[hash_idx];
 	hash_tbl_entry = *hash_entry_ptr;
@@ -1003,7 +1010,8 @@ static int name_hash_tbl_delete(name_tbl_entry_t *entry_to_delete,
 		 * name_tbl_entry_t linked list, so try to remove
 		 * entry_to_delete from this linked list.
 		 */
-		name_tbl_entry = (name_tbl_entry_t *)(hash_tbl_entry & ~0x3F);
+		name_tbl_entry =
+			(name_tbl_entry_t *)(uintptr_t)(hash_tbl_entry & ~0x3F);
 		rc = name_tbl_entry_list_remove(hash_entry_ptr, name_tbl_entry,
 						entry_to_delete, entry_cnt);
 		tbn = (*hash_entry_ptr) & ~0x3F;
@@ -1172,7 +1180,7 @@ static uint32_t level2_hash_histo(secondary_hash_tbl_t *hash_tbl,
 			collisions = 0;
 		} else {
 			name_tbl_entry = (name_tbl_entry_t *)
-				(hash_tbl_entry & ~0x3F);
+				(uintptr_t)(hash_tbl_entry & ~0x3F);
 			collisions     = linked_list_len(name_tbl_entry);
 		}
 
@@ -1199,11 +1207,11 @@ static uint32_t level1_hash_histo(secondary_hash_tbl_t *hash_tbl,
 			collisions = 0;
 		} else if ((hash_tbl_entry & 0x3F) != 0) {
 			name_tbl_entry = (name_tbl_entry_t *)
-				(hash_tbl_entry & ~0x3F);
+				(uintptr_t)(hash_tbl_entry & ~0x3F);
 			collisions     = linked_list_len(name_tbl_entry);
 		} else {
 			secondary_hash = (secondary_hash_tbl_t *)
-				hash_tbl_entry;
+				(uintptr_t)hash_tbl_entry;
 			collisions     = level2_hash_histo(secondary_hash,
 							   level2_histo);
 		}
@@ -1232,7 +1240,7 @@ static void secondary_hash_histo_print(void)
 			 * hash table
 			 */
 			secondary_hash = (secondary_hash_tbl_t *)
-				hash_tbl_entry;
+				(uintptr_t)hash_tbl_entry;
 			level1_hash_histo(secondary_hash, level1_histo,
 					  level2_histo);
 		}
diff --git a/platform/linux-generic/odp_pkt_queue.c b/platform/linux-generic/odp_pkt_queue.c
index 45508eb..88520b1 100644
--- a/platform/linux-generic/odp_pkt_queue.c
+++ b/platform/linux-generic/odp_pkt_queue.c
@@ -215,7 +215,7 @@ _odp_int_queue_pool_t _odp_queue_pool_create(uint32_t max_num_queues,
 
 	pool->min_free_list_size = pool->free_list_size;
 	pool->peak_free_list_size = pool->free_list_size;
-	return (_odp_int_queue_pool_t)pool;
+	return (_odp_int_queue_pool_t)(uintptr_t)pool;
 }
 
 _odp_int_pkt_queue_t _odp_pkt_queue_create(_odp_int_queue_pool_t queue_pool)
@@ -223,7 +223,7 @@ _odp_int_pkt_queue_t _odp_pkt_queue_create(_odp_int_queue_pool_t queue_pool)
 	queue_pool_t *pool;
 	uint32_t queue_num;
 
-	pool = (queue_pool_t *)queue_pool;
+	pool = (queue_pool_t *)(uintptr_t)queue_pool;
 	queue_num = pool->next_queue_num++;
 	if (pool->max_queue_num < queue_num)
 		return _ODP_INT_PKT_QUEUE_INVALID;
@@ -239,7 +239,7 @@ int _odp_pkt_queue_append(_odp_int_queue_pool_t queue_pool,
 	uint32_t queue_num, first_blk_idx, tail_blk_idx, new_tail_blk_idx;
 	uint32_t idx;
 
-	pool = (queue_pool_t *)queue_pool;
+	pool = (queue_pool_t *)(uintptr_t)queue_pool;
 	queue_num = (uint32_t)pkt_queue;
 	if ((queue_num == 0) || (pool->max_queue_num < queue_num))
 		return -2;
@@ -296,7 +296,7 @@ int _odp_pkt_queue_remove(_odp_int_queue_pool_t queue_pool,
 	queue_blk_t *first_blk, *second_blk;
 	uint32_t queue_num, first_blk_idx, next_blk_idx, idx;
 
-	pool = (queue_pool_t *)queue_pool;
+	pool = (queue_pool_t *)(uintptr_t)queue_pool;
 	queue_num = (uint32_t)pkt_queue;
 	if ((queue_num == 0) || (pool->max_queue_num < queue_num))
 		return -2;
@@ -347,7 +347,7 @@ void _odp_pkt_queue_stats_print(_odp_int_queue_pool_t queue_pool)
 {
 	queue_pool_t *pool;
 
-	pool = (queue_pool_t *)queue_pool;
+	pool = (queue_pool_t *)(uintptr_t)queue_pool;
 	ODP_DBG("pkt_queue_stats - queue_pool=0x%lX\n", queue_pool);
 	ODP_DBG("  max_queue_num=%u max_queued_pkts=%u next_queue_num=%u\n",
 		pool->max_queue_num, pool->max_queued_pkts,
@@ -367,7 +367,7 @@ void _odp_queue_pool_destroy(_odp_int_queue_pool_t queue_pool)
 	queue_pool_t *pool;
 	uint32_t idx;
 
-	pool = (queue_pool_t *)queue_pool;
+	pool = (queue_pool_t *)(uintptr_t)queue_pool;
 	for (idx = 0; idx < 16; idx++) {
 		queue_region_desc = &pool->queue_region_descs[idx];
 		if (queue_region_desc->queue_blks)
diff --git a/platform/linux-generic/odp_sorted_list.c b/platform/linux-generic/odp_sorted_list.c
index 221754d..5811266 100644
--- a/platform/linux-generic/odp_sorted_list.c
+++ b/platform/linux-generic/odp_sorted_list.c
@@ -56,7 +56,7 @@ _odp_int_sorted_pool_t _odp_sorted_pool_create(uint32_t max_sorted_lists)
 	list_descs = malloc(malloc_len);
 	memset(list_descs, 0, malloc_len);
 	pool->list_descs = list_descs;
-	return (_odp_int_sorted_pool_t)pool;
+	return (_odp_int_sorted_pool_t)(uintptr_t)pool;
 }
 
 _odp_int_sorted_list_t
@@ -66,7 +66,7 @@ _odp_sorted_list_create(_odp_int_sorted_pool_t sorted_pool,
 	sorted_pool_t *pool;
 	uint32_t       list_idx;
 
-	pool     = (sorted_pool_t *)sorted_pool;
+	pool     = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_idx = pool->next_list_idx++;
 	return (_odp_int_sorted_list_t)list_idx;
 }
@@ -81,7 +81,7 @@ int _odp_sorted_list_insert(_odp_int_sorted_pool_t sorted_pool,
 	sorted_pool_t      *pool;
 	uint32_t            list_idx;
 
-	pool     = (sorted_pool_t *)sorted_pool;
+	pool     = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_idx = (uint32_t)sorted_list;
 	if ((pool->next_list_idx    <= list_idx) ||
 	    (pool->max_sorted_lists <= list_idx))
@@ -125,7 +125,7 @@ int _odp_sorted_list_find(_odp_int_sorted_pool_t sorted_pool,
 	sorted_pool_t      *pool;
 	uint32_t            list_idx;
 
-	pool     = (sorted_pool_t *)sorted_pool;
+	pool     = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_idx = (uint32_t)sorted_list;
 	if ((pool->next_list_idx    <= list_idx) ||
 	    (pool->max_sorted_lists <= list_idx))
@@ -161,7 +161,7 @@ int _odp_sorted_list_delete(_odp_int_sorted_pool_t sorted_pool,
 	sorted_pool_t      *pool;
 	uint32_t            list_idx;
 
-	pool     = (sorted_pool_t *)sorted_pool;
+	pool     = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_idx = (uint32_t)sorted_list;
 	if ((pool->next_list_idx    <= list_idx) ||
 	    (pool->max_sorted_lists <= list_idx))
@@ -207,7 +207,7 @@ int _odp_sorted_list_remove(_odp_int_sorted_pool_t sorted_pool,
 	sorted_pool_t      *pool;
 	uint32_t            list_idx;
 
-	pool     = (sorted_pool_t *)sorted_pool;
+	pool     = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_idx = (uint32_t)sorted_list;
 	if ((pool->next_list_idx    <= list_idx) ||
 	    (pool->max_sorted_lists <= list_idx))
@@ -237,7 +237,7 @@ void _odp_sorted_list_stats_print(_odp_int_sorted_pool_t sorted_pool)
 {
 	sorted_pool_t *pool;
 
-	pool = (sorted_pool_t *)sorted_pool;
+	pool = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	ODP_DBG("sorted_pool=0x%lX\n", sorted_pool);
 	ODP_DBG("  max_sorted_lists=%u next_list_idx=%u\n",
 		pool->max_sorted_lists, pool->next_list_idx);
@@ -253,7 +253,7 @@ void _odp_sorted_pool_destroy(_odp_int_sorted_pool_t sorted_pool)
 	sorted_pool_t       *pool;
 	uint32_t             list_idx;
 
-	pool       = (sorted_pool_t *)sorted_pool;
+	pool       = (sorted_pool_t *)(uintptr_t)sorted_pool;
 	list_descs = pool->list_descs;
 
 	for (list_idx = 0; list_idx < pool->next_list_idx; list_idx++) {
diff --git a/platform/linux-generic/odp_timer_wheel.c b/platform/linux-generic/odp_timer_wheel.c
index bcab01b..21be3ef 100644
--- a/platform/linux-generic/odp_timer_wheel.c
+++ b/platform/linux-generic/odp_timer_wheel.c
@@ -748,7 +748,7 @@ _odp_timer_wheel_t _odp_timer_wheel_create(uint32_t max_concurrent_timers,
 	free_list_add(timer_wheels, max_concurrent_timers / 4);
 	timer_wheels->min_free_list_size  = timer_wheels->free_list_size;
 	timer_wheels->peak_free_list_size = timer_wheels->free_list_size;
-	return (_odp_timer_wheel_t)timer_wheels;
+	return (_odp_timer_wheel_t)(uintptr_t)timer_wheels;
 }
 
 uint32_t _odp_timer_wheel_curr_time_update(_odp_timer_wheel_t timer_wheel,
@@ -759,7 +759,7 @@ uint32_t _odp_timer_wheel_curr_time_update(_odp_timer_wheel_t timer_wheel,
 	uint32_t        desc_idx;
 	int             rc;
 
-	timer_wheels      = (timer_wheels_t *)timer_wheel;
+	timer_wheels      = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	new_current_ticks = current_time >> CYCLES_TO_TICKS_SHIFT;
 	elapsed_ticks     = new_current_ticks - timer_wheels->current_ticks;
 	if (elapsed_ticks == 0)
@@ -787,13 +787,13 @@ int _odp_timer_wheel_insert(_odp_timer_wheel_t timer_wheel,
 	uint64_t        user_data, wakeup_ticks;
 	int             rc;
 
-	user_data = (uint64_t)user_ptr;
+	user_data = (uint64_t)(uintptr_t)user_ptr;
 	if (user_data == 0)
 		return -4;  /* user_data cannot be 0! */
 	else if ((user_data & 0x3) != 0)
 		return -5;  /* user_data ptr must be at least 4-byte aligned. */
 
-	timer_wheels = (timer_wheels_t *)timer_wheel;
+	timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	wakeup_ticks = (wakeup_time >> CYCLES_TO_TICKS_SHIFT) + 1;
 	if (wakeup_time <= timer_wheels->current_ticks)
 		return -6;
@@ -828,21 +828,21 @@ void *_odp_timer_wheel_next_expired(_odp_timer_wheel_t timer_wheel)
 	int             rc;
 
 	/* Remove the head of the timer wheel. */
-	timer_wheels = (timer_wheels_t *)timer_wheel;
+	timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	rc = expired_timers_remove(timer_wheels, &user_data);
 	if (rc <= 0)
 		return NULL;
 
 	user_data &= ~0x3;
 	timer_wheels->total_timer_removes++;
-	return (void *)user_data;
+	return (void *)(uintptr_t)user_data;
 }
 
 uint32_t _odp_timer_wheel_count(_odp_timer_wheel_t timer_wheel)
 {
 	timer_wheels_t *timer_wheels;
 
-	timer_wheels = (timer_wheels_t *)timer_wheel;
+	timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	return timer_wheels->total_timer_inserts -
 		timer_wheels->total_timer_removes;
 }
@@ -862,7 +862,7 @@ void _odp_timer_wheel_stats_print(_odp_timer_wheel_t timer_wheel)
 	expired_ring_t *expired_ring;
 	uint32_t        wheel_idx;
 
-	timer_wheels = (timer_wheels_t *)timer_wheel;
+	timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	expired_ring = timer_wheels->expired_timers_ring;
 
 	ODP_DBG("_odp_int_timer_wheel_stats current_ticks=%lu\n",
@@ -894,7 +894,7 @@ void _odp_timer_wheel_destroy(_odp_timer_wheel_t timer_wheel)
 	timer_wheels_t *timer_wheels;
 	expired_ring_t *expired_ring;
 
-	timer_wheels = (timer_wheels_t *)timer_wheel;
+	timer_wheels = (timer_wheels_t *)(uintptr_t)timer_wheel;
 	expired_ring = timer_wheels->expired_timers_ring;
 
 	/* First free all of the block_of_timer_blks @TODO */
diff --git a/platform/linux-generic/odp_traffic_mngr.c b/platform/linux-generic/odp_traffic_mngr.c
index 88e0ada..6179568 100644
--- a/platform/linux-generic/odp_traffic_mngr.c
+++ b/platform/linux-generic/odp_traffic_mngr.c
@@ -658,7 +658,7 @@ static int tm_delay_pkt(tm_system_t *tm_system, tm_shaper_obj_t *shaper_obj,
 	timer_context = (((uint64_t)tm_queue_obj->timer_seq) << 32) |
 		(((uint64_t)tm_queue_obj->queue_num) << 4);
 	_odp_timer_wheel_insert(tm_system->_odp_int_timer_wheel,
-				wakeup_time, (void *)timer_context);
+				wakeup_time, (void *)(uintptr_t)timer_context);
 
 	tm_queue_obj->timer_reason = UNDELAY_PKT;
 	tm_queue_obj->timer_shaper = shaper_obj;
@@ -1680,7 +1680,7 @@ static int tm_process_expired_timers(tm_system_t *tm_system,
 		if (!ptr)
 			return work_done;
 
-		timer_context = (uint64_t)ptr;
+		timer_context = (uint64_t)(uintptr_t)ptr;
 		queue_num = (timer_context & 0xFFFFFFFF) >> 4;
 		timer_seq = timer_context >> 32;
 		tm_queue_obj = tm_system->queue_num_tbl[queue_num];
