forked from pool/u-boot
36c65f2eed
1 OBS-URL: https://build.opensuse.org/request/show/419605 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/u-boot?expand=0&rev=78
143 lines
4.6 KiB
Diff
143 lines
4.6 KiB
Diff
From 93751660f58a6286e019e580e3aecc27d4853a16 Mon Sep 17 00:00:00 2001
|
|
From: Alexander Graf <agraf@suse.de>
|
|
Date: Sun, 7 Aug 2016 13:15:23 +0200
|
|
Subject: [PATCH] smbios: Allow compilation on 64bit systems
|
|
|
|
The SMBIOS generation code passes pointers as u32. That causes the compiler
|
|
to warn on casts to pointers. This patch moves all address pointers to
|
|
uintptr_t instead.
|
|
|
|
Technically u32 would be enough for the current SMBIOS2 style tables, but
|
|
we may want to extend the code to SMBIOS3 in the future which is 64bit
|
|
address capable.
|
|
|
|
Signed-off-by: Alexander Graf <agraf@suse.de>
|
|
---
|
|
arch/x86/lib/tables.c | 7 ++++++-
|
|
include/smbios.h | 4 ++--
|
|
lib/smbios.c | 16 ++++++++--------
|
|
3 files changed, 16 insertions(+), 11 deletions(-)
|
|
|
|
diff --git a/arch/x86/lib/tables.c b/arch/x86/lib/tables.c
|
|
index e62705a..025b183 100644
|
|
--- a/arch/x86/lib/tables.c
|
|
+++ b/arch/x86/lib/tables.c
|
|
@@ -12,6 +12,11 @@
|
|
#include <asm/acpi_table.h>
|
|
#include <asm/coreboot_tables.h>
|
|
|
|
+static u32 write_smbios_table_wrapper(u32 addr)
|
|
+{
|
|
+ return write_smbios_table(addr);
|
|
+}
|
|
+
|
|
/**
|
|
* Function prototype to write a specific configuration table
|
|
*
|
|
@@ -34,7 +39,7 @@ static table_write table_write_funcs[] = {
|
|
write_acpi_tables,
|
|
#endif
|
|
#ifdef CONFIG_GENERATE_SMBIOS_TABLE
|
|
- write_smbios_table,
|
|
+ write_smbios_table_wrapper,
|
|
#endif
|
|
};
|
|
|
|
diff --git a/include/smbios.h b/include/smbios.h
|
|
index 623a703..5962d4c 100644
|
|
--- a/include/smbios.h
|
|
+++ b/include/smbios.h
|
|
@@ -221,7 +221,7 @@ static inline void fill_smbios_header(void *table, int type,
|
|
* @handle: the structure's handle, a unique 16-bit number
|
|
* @return: size of the structure
|
|
*/
|
|
-typedef int (*smbios_write_type)(u32 *addr, int handle);
|
|
+typedef int (*smbios_write_type)(uintptr_t *addr, int handle);
|
|
|
|
/**
|
|
* write_smbios_table() - Write SMBIOS table
|
|
@@ -231,6 +231,6 @@ typedef int (*smbios_write_type)(u32 *addr, int handle);
|
|
* @addr: start address to write SMBIOS table
|
|
* @return: end address of SMBIOS table
|
|
*/
|
|
-u32 write_smbios_table(u32 addr);
|
|
+uintptr_t write_smbios_table(uintptr_t addr);
|
|
|
|
#endif /* _SMBIOS_H_ */
|
|
diff --git a/lib/smbios.c b/lib/smbios.c
|
|
index 9808ee7..8dfd486 100644
|
|
--- a/lib/smbios.c
|
|
+++ b/lib/smbios.c
|
|
@@ -69,7 +69,7 @@ static int smbios_string_table_len(char *start)
|
|
return len + 1;
|
|
}
|
|
|
|
-static int smbios_write_type0(u32 *current, int handle)
|
|
+static int smbios_write_type0(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type0 *t = (struct smbios_type0 *)*current;
|
|
int len = sizeof(struct smbios_type0);
|
|
@@ -98,7 +98,7 @@ static int smbios_write_type0(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type1(u32 *current, int handle)
|
|
+static int smbios_write_type1(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type1 *t = (struct smbios_type1 *)*current;
|
|
int len = sizeof(struct smbios_type1);
|
|
@@ -114,7 +114,7 @@ static int smbios_write_type1(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type2(u32 *current, int handle)
|
|
+static int smbios_write_type2(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type2 *t = (struct smbios_type2 *)*current;
|
|
int len = sizeof(struct smbios_type2);
|
|
@@ -132,7 +132,7 @@ static int smbios_write_type2(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type3(u32 *current, int handle)
|
|
+static int smbios_write_type3(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type3 *t = (struct smbios_type3 *)*current;
|
|
int len = sizeof(struct smbios_type3);
|
|
@@ -152,7 +152,7 @@ static int smbios_write_type3(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type4(u32 *current, int handle)
|
|
+static int smbios_write_type4(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type4 *t = (struct smbios_type4 *)*current;
|
|
int len = sizeof(struct smbios_type4);
|
|
@@ -185,7 +185,7 @@ static int smbios_write_type4(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type32(u32 *current, int handle)
|
|
+static int smbios_write_type32(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type32 *t = (struct smbios_type32 *)*current;
|
|
int len = sizeof(struct smbios_type32);
|
|
@@ -198,7 +198,7 @@ static int smbios_write_type32(u32 *current, int handle)
|
|
return len;
|
|
}
|
|
|
|
-static int smbios_write_type127(u32 *current, int handle)
|
|
+static int smbios_write_type127(uintptr_t *current, int handle)
|
|
{
|
|
struct smbios_type127 *t = (struct smbios_type127 *)*current;
|
|
int len = sizeof(struct smbios_type127);
|
|
@@ -221,7 +221,7 @@ static smbios_write_type smbios_write_funcs[] = {
|
|
smbios_write_type127
|
|
};
|
|
|
|
-u32 write_smbios_table(u32 addr)
|
|
+uintptr_t write_smbios_table(uintptr_t addr)
|
|
{
|
|
struct smbios_entry *se;
|
|
u32 tables;
|