[coreboot-gerrit] New patch to review for coreboot: 9381541 cbfs: 64-bit cleanups
Ronald G. Minnich (rminnich@gmail.com)
gerrit at coreboot.org
Mon Nov 11 19:43:22 CET 2013
Ronald G. Minnich (rminnich at gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/4037
-gerrit
commit 9381541d8af5ddc504f329609b06a8b8f097cec5
Author: Ronald G. Minnich <rminnich at google.com>
Date: Mon Nov 11 10:36:28 2013 -0800
cbfs: 64-bit cleanups
cbfs used u32 in a number of cases where uintptr_t was
correct. This change builds for both 64-bit and 32-bit
boards.
Change-Id: If42c722a8a9e8d565d3827f65ed6c2cb8e90ba60
Signed-off-by: Ronald G. Minnich <rminnich at google.com>
---
src/lib/cbfs.c | 13 ++++++++-----
src/lib/cbmem.c | 2 +-
src/lib/selfboot.c | 9 +++++----
3 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/src/lib/cbfs.c b/src/lib/cbfs.c
index 4ccc9e6..7499387 100644
--- a/src/lib/cbfs.c
+++ b/src/lib/cbfs.c
@@ -260,7 +260,7 @@ void * cbfs_load_stage(struct cbfs_media *media, const char *name)
cbfs_get_file_content(media, name, CBFS_TYPE_STAGE);
/* this is a mess. There is no ntohll. */
/* for now, assume compatible byte order until we solve this. */
- uint32_t entry;
+ uintptr_t load, entry;
uint32_t final_size;
if (stage == NULL)
@@ -271,16 +271,17 @@ void * cbfs_load_stage(struct cbfs_media *media, const char *name)
(uint32_t) stage->load, stage->memlen,
stage->entry);
+ load = stage->load;
final_size = cbfs_decompress(stage->compression,
((unsigned char *) stage) +
sizeof(struct cbfs_stage),
- (void *) (uint32_t) stage->load,
+ (void *) load,
stage->len);
if (!final_size)
return (void *) -1;
/* Stages rely the below clearing so that the bss is initialized. */
- memset((void *)((uintptr_t)stage->load + final_size), 0,
+ memset((void *)(load + final_size), 0,
stage->memlen - final_size);
DEBUG("stage loaded.\n");
@@ -294,6 +295,7 @@ void * cbfs_load_stage(struct cbfs_media *media, const char *name)
int cbfs_execute_stage(struct cbfs_media *media, const char *name)
{
+ uintptr_t entry;
struct cbfs_stage *stage = (struct cbfs_stage *)
cbfs_get_file_content(media, name, CBFS_TYPE_STAGE);
@@ -307,8 +309,9 @@ int cbfs_execute_stage(struct cbfs_media *media, const char *name)
}
/* FIXME: This isn't right */
- LOG("run @ %p\n", (void *) ntohl((uint32_t) stage->entry));
- return run_address((void *)(uintptr_t)ntohll(stage->entry));
+ entry = ntohl(stage->entry);
+ LOG("run @ %p\n", (void *) entry);
+ return run_address((void *)entry);
}
#if !CONFIG_ALT_CBFS_LOAD_PAYLOAD
diff --git a/src/lib/cbmem.c b/src/lib/cbmem.c
index de49816..6449b55 100644
--- a/src/lib/cbmem.c
+++ b/src/lib/cbmem.c
@@ -200,7 +200,7 @@ void *cbmem_add(u32 id, u64 size)
cbmem_toc[0].base += size;
cbmem_toc[0].size -= size;
- return (void *)(u32)cbmem_toc[i].base;
+ return (void *)(uintptr_t)cbmem_toc[i].base;
}
void *cbmem_find(u32 id)
diff --git a/src/lib/selfboot.c b/src/lib/selfboot.c
index f69ad14..33a4544 100644
--- a/src/lib/selfboot.c
+++ b/src/lib/selfboot.c
@@ -305,7 +305,7 @@ static int relocate_segment(unsigned long buffer, struct segment *seg)
static int build_self_segment_list(
struct segment *head,
struct lb_memory *mem,
- struct cbfs_payload *payload, u32 *entry)
+ struct cbfs_payload *payload, uintptr_t *entry)
{
struct segment *new;
struct segment *ptr;
@@ -332,8 +332,9 @@ static int build_self_segment_list(
new->s_memsz = ntohl(segment->mem_len);
new->compression = ntohl(segment->compression);
- new->s_srcaddr = (u32) ((unsigned char *)first_segment)
- + ntohl(segment->offset);
+ new->s_srcaddr = (uintptr_t)
+ ((unsigned char *)first_segment)
+ + ntohl(segment->offset);
new->s_filesz = ntohl(segment->len);
printk(BIOS_DEBUG, " New segment dstaddr 0x%lx memsize 0x%lx srcaddr 0x%lx filesize 0x%lx\n",
new->s_dstaddr, new->s_memsz, new->s_srcaddr, new->s_filesz);
@@ -504,7 +505,7 @@ static int load_self_segments(
void *selfload(struct lb_memory *mem, struct cbfs_payload *payload)
{
- u32 entry=0;
+ uintptr_t entry=0;
struct segment head;
/* Preprocess the self segments */
More information about the coreboot-gerrit
mailing list