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:
parent
a40901bf01
commit
79a591fb38
|
@ -168,7 +168,7 @@ xhci_init (unsigned long physical_bar)
|
||||||
controller->poll_intr_queue = xhci_poll_intr_queue;
|
controller->poll_intr_queue = xhci_poll_intr_queue;
|
||||||
controller->pcidev = 0;
|
controller->pcidev = 0;
|
||||||
|
|
||||||
controller->reg_base = (u32)physical_bar;
|
controller->reg_base = (uintptr_t)physical_bar;
|
||||||
controller->instance = xzalloc(sizeof(xhci_t));
|
controller->instance = xzalloc(sizeof(xhci_t));
|
||||||
xhci_t *const xhci = (xhci_t *)controller->instance;
|
xhci_t *const xhci = (xhci_t *)controller->instance;
|
||||||
|
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#define __USB_H
|
#define __USB_H
|
||||||
#include <libpayload.h>
|
#include <libpayload.h>
|
||||||
#include <pci/pci.h>
|
#include <pci/pci.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
typedef enum { host_to_device = 0, device_to_host = 1 } dev_req_dir;
|
typedef enum { host_to_device = 0, device_to_host = 1 } dev_req_dir;
|
||||||
typedef enum { standard_type = 0, class_type = 1, vendor_type =
|
typedef enum { standard_type = 0, class_type = 1, vendor_type =
|
||||||
|
@ -210,7 +211,7 @@ typedef enum { OHCI = 0, UHCI = 1, EHCI = 2, XHCI = 3} hc_type;
|
||||||
|
|
||||||
struct usbdev_hc {
|
struct usbdev_hc {
|
||||||
hci_t *next;
|
hci_t *next;
|
||||||
u32 reg_base;
|
uintptr_t reg_base;
|
||||||
pcidev_t pcidev; // 0 if not used (eg on ARM)
|
pcidev_t pcidev; // 0 if not used (eg on ARM)
|
||||||
hc_type type;
|
hc_type type;
|
||||||
int latest_address;
|
int latest_address;
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
#define IN_MALLOC_C
|
#define IN_MALLOC_C
|
||||||
#include <libpayload.h>
|
#include <libpayload.h>
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
struct memory_type {
|
struct memory_type {
|
||||||
void *start;
|
void *start;
|
||||||
|
@ -158,7 +159,7 @@ static void *alloc(int len, struct memory_type *type)
|
||||||
|
|
||||||
if (header & FLAG_FREE) {
|
if (header & FLAG_FREE) {
|
||||||
if (len <= size) {
|
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);
|
int nsize = size - (HDRSIZE + len);
|
||||||
|
|
||||||
/* If there is still room in this block,
|
/* 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);
|
*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);
|
} 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);
|
free(new_region);
|
||||||
return NULL;
|
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->size = num_elements * alignment;
|
||||||
new_region->free = num_elements;
|
new_region->free = num_elements;
|
||||||
new_region->next = type->align_regions;
|
new_region->next = type->align_regions;
|
||||||
|
|
|
@ -135,21 +135,21 @@ void * cbfs_load_stage(struct cbfs_media *media, const char *name)
|
||||||
cbfs_get_file_content(media, name, CBFS_TYPE_STAGE, NULL);
|
cbfs_get_file_content(media, name, CBFS_TYPE_STAGE, NULL);
|
||||||
/* this is a mess. There is no ntohll. */
|
/* this is a mess. There is no ntohll. */
|
||||||
/* for now, assume compatible byte order until we solve this. */
|
/* for now, assume compatible byte order until we solve this. */
|
||||||
uint32_t entry;
|
uintptr_t entry;
|
||||||
uint32_t final_size;
|
uint32_t final_size;
|
||||||
|
|
||||||
if (stage == NULL)
|
if (stage == NULL)
|
||||||
return (void *) -1;
|
return (void *) -1;
|
||||||
|
|
||||||
LOG("loading stage %s @ 0x%x (%d bytes), entry @ 0x%llx\n",
|
LOG("loading stage %s @ 0x%p (%d bytes), entry @ 0x%llx\n",
|
||||||
name,
|
name,
|
||||||
(uint32_t) stage->load, stage->memlen,
|
(void*)(uintptr_t) stage->load, stage->memlen,
|
||||||
stage->entry);
|
stage->entry);
|
||||||
|
|
||||||
final_size = cbfs_decompress(stage->compression,
|
final_size = cbfs_decompress(stage->compression,
|
||||||
((unsigned char *) stage) +
|
((unsigned char *) stage) +
|
||||||
sizeof(struct cbfs_stage),
|
sizeof(struct cbfs_stage),
|
||||||
(void *) (uint32_t) stage->load,
|
(void *) (uintptr_t) stage->load,
|
||||||
stage->len);
|
stage->len);
|
||||||
if (!final_size)
|
if (!final_size)
|
||||||
return (void *) -1;
|
return (void *) -1;
|
||||||
|
@ -179,8 +179,7 @@ int cbfs_execute_stage(struct cbfs_media *media, const char *name)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FIXME: This isn't right */
|
LOG("run @ %p\n", (void *) (uintptr_t)ntohll(stage->entry));
|
||||||
LOG("run @ %p\n", (void *) ntohl((uint32_t) stage->entry));
|
|
||||||
return run_address((void *)(uintptr_t)ntohll(stage->entry));
|
return run_address((void *)(uintptr_t)ntohll(stage->entry));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue