summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Reinauer <reinauer@chromium.org>2013-04-18 18:01:34 -0700
committerRonald G. Minnich <rminnich@gmail.com>2013-04-20 05:18:15 +0200
commit642b1db7336d4770d882684e42157103f3f38b19 (patch)
treec821d23e68f280521a5fa6b582802206400a835a
parent8d5bc9f7726ac70e1c1a4f293827d67628650824 (diff)
downloadcoreboot-642b1db7336d4770d882684e42157103f3f38b19.tar.xz
Eliminate use of pointers in coreboot table
Because pointers can be 32bit or 64bit big, using them in the coreboot table requires the OS and the firmware to operate in the same mode which is not always the case. Hence, use 64bit for all pointers stored in the coreboot table. Guess we'll have to fix this up once we port to the first 128bit machines. Change-Id: I46fc1dad530e5230986f7aa5740595428ede4f93 Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/3115 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@google.com>
-rw-r--r--payloads/libpayload/include/coreboot_tables.h6
-rw-r--r--src/include/boot/coreboot_tables.h4
-rw-r--r--src/lib/coreboot_table.c2
-rw-r--r--src/vendorcode/google/chromeos/gnvs.c4
-rw-r--r--src/vendorcode/google/chromeos/gnvs.h2
5 files changed, 9 insertions, 9 deletions
diff --git a/payloads/libpayload/include/coreboot_tables.h b/payloads/libpayload/include/coreboot_tables.h
index 02c9449b08..3889ede66a 100644
--- a/payloads/libpayload/include/coreboot_tables.h
+++ b/payloads/libpayload/include/coreboot_tables.h
@@ -188,7 +188,7 @@ struct cb_gpios {
struct cb_vdat {
uint32_t tag;
uint32_t size; /* size of the entire entry */
- void *vdat_addr;
+ uint64_t vdat_addr;
uint32_t vdat_size;
};
@@ -198,7 +198,7 @@ struct cb_vdat {
struct cb_cbmem_tab {
uint32_t tag;
uint32_t size;
- void *cbmem_tab;
+ uint64_t cbmem_tab;
};
#define CB_TAG_VBNV 0x0019
@@ -213,7 +213,7 @@ struct cb_vbnv {
struct cb_vboot_handoff {
uint32_t tag;
uint32_t size;
- void *vboot_handoff_addr;
+ uint64_t vboot_handoff_addr;
uint32_t vboot_handoff_size;
};
diff --git a/src/include/boot/coreboot_tables.h b/src/include/boot/coreboot_tables.h
index a7e4ab0500..ee1c29f4c5 100644
--- a/src/include/boot/coreboot_tables.h
+++ b/src/include/boot/coreboot_tables.h
@@ -218,7 +218,7 @@ struct lb_vdat {
uint32_t tag;
uint32_t size;
- void *vdat_addr;
+ uint64_t vdat_addr;
uint32_t vdat_size;
};
@@ -246,7 +246,7 @@ struct lb_vboot_handoff {
uint32_t tag;
uint32_t size;
- void *vboot_handoff_addr;
+ uint64_t vboot_handoff_addr;
uint32_t vboot_handoff_size;
};
diff --git a/src/lib/coreboot_table.c b/src/lib/coreboot_table.c
index 765c51001e..d25b59d43d 100644
--- a/src/lib/coreboot_table.c
+++ b/src/lib/coreboot_table.c
@@ -232,7 +232,7 @@ static void lb_vboot_handoff(struct lb_header *header)
vbho = (struct lb_vboot_handoff *)lb_new_record(header);
vbho->tag = LB_TAB_VBOOT_HANDOFF;
vbho->size = sizeof(*vbho);
- vbho->vboot_handoff_addr = addr;
+ vbho->vboot_handoff_addr = (intptr_t)addr;
vbho->vboot_handoff_size = size;
}
#else
diff --git a/src/vendorcode/google/chromeos/gnvs.c b/src/vendorcode/google/chromeos/gnvs.c
index 0d4095061d..5ee366598a 100644
--- a/src/vendorcode/google/chromeos/gnvs.c
+++ b/src/vendorcode/google/chromeos/gnvs.c
@@ -79,8 +79,8 @@ void chromeos_set_me_hash(u32 *hash, int len)
memcpy(me_hash_saved, hash, len*sizeof(u32));
}
-void acpi_get_vdat_info(void **vdat_addr, uint32_t *vdat_size)
+void acpi_get_vdat_info(uint64_t *vdat_addr, uint32_t *vdat_size)
{
- *vdat_addr = vboot_data;
+ *vdat_addr = (intptr_t)vboot_data;
*vdat_size = sizeof(*vboot_data);
}
diff --git a/src/vendorcode/google/chromeos/gnvs.h b/src/vendorcode/google/chromeos/gnvs.h
index 40674944fa..00fe443eb2 100644
--- a/src/vendorcode/google/chromeos/gnvs.h
+++ b/src/vendorcode/google/chromeos/gnvs.h
@@ -64,6 +64,6 @@ typedef struct {
extern chromeos_acpi_t *vboot_data;
void chromeos_init_vboot(chromeos_acpi_t *chromeos);
void chromeos_set_me_hash(u32*, int);
-void acpi_get_vdat_info(void **vdat_addr, uint32_t *vdat_size);
+void acpi_get_vdat_info(uint64_t *vdat_addr, uint32_t *vdat_size);
#endif