libpayload: Fix pointer related casts

Fix pointer related casts since this can create a problem for 64-bit systems.

BUG=None
BRANCH=None
TEST=Compiled successfully for link, nyan using emerge-* libpayload

Original-Change-Id: I4cbd2d9f1efaaac87c3eba69204337fd6893ed66
Original-Reviewed-on: https://chromium-review.googlesource.com/199564
Original-Reviewed-by: Furquan Shaikh <furquan@chromium.org>
Original-Commit-Queue: Furquan Shaikh <furquan@chromium.org>
Original-Tested-by: Furquan Shaikh <furquan@chromium.org>
(cherry picked from commit 914b118a64b0691aeca463dff24252db9c24109e)
Signed-off-by: Marc Jones <marc.jones@se-eng.com>

Change-Id: I11f070ed5d3eddd8b9be30c428cb24c8439e617b
Reviewed-on: http://review.coreboot.org/7905
Reviewed-by: Edward O'Callaghan <eocallaghan@alterapraxis.com>
Tested-by: build bot (Jenkins)
This commit is contained in:
Furquan Shaikh
2014-05-13 13:47:32 -07:00
committed by Marc Jones
parent a40901bf01
commit 79a591fb38
4 changed files with 13 additions and 12 deletions

View File

@ -41,6 +41,7 @@
#define IN_MALLOC_C
#include <libpayload.h>
#include <stdint.h>
struct memory_type {
void *start;
@ -158,7 +159,7 @@ static void *alloc(int len, struct memory_type *type)
if (header & FLAG_FREE) {
if (len <= size) {
hdrtype_t volatile *nptr = (hdrtype_t volatile *)((int)ptr + HDRSIZE + len);
hdrtype_t volatile *nptr = (hdrtype_t volatile *)((uintptr_t)ptr + HDRSIZE + len);
int nsize = size - (HDRSIZE + len);
/* If there is still room in this block,
@ -177,11 +178,11 @@ static void *alloc(int len, struct memory_type *type)
*ptr = USED_BLOCK(size);
}
return (void *)((int)ptr + HDRSIZE);
return (void *)((uintptr_t)ptr + HDRSIZE);
}
}
ptr = (hdrtype_t volatile *)((int)ptr + HDRSIZE + size);
ptr = (hdrtype_t volatile *)((uintptr_t)ptr + HDRSIZE + size);
} while (ptr < (hdrtype_t *) type->end);
@ -353,7 +354,7 @@ static struct align_region_t *allocate_region(int alignment, int num_elements, s
free(new_region);
return NULL;
}
new_region->start_data = (void*)((u32)(new_region->start + num_elements + alignment - 1) & (~(alignment-1)));
new_region->start_data = (void*)((uintptr_t)(new_region->start + num_elements + alignment - 1) & (~(alignment-1)));
new_region->size = num_elements * alignment;
new_region->free = num_elements;
new_region->next = type->align_regions;