mirror of
https://github.com/u-boot/u-boot.git
synced 2024-11-27 22:56:49 +08:00
x86: Use unsigned long for address in table generation
We should use unsigned long rather than u32 for addresses. Update this so that the table-generation code builds correctly on 64-bit machines. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
parent
0ec28e0266
commit
42fd8c19b5
@ -264,7 +264,7 @@ int irq_router_probe(struct udevice *dev)
|
||||
return irq_router_common_init(dev);
|
||||
}
|
||||
|
||||
u32 write_pirq_routing_table(u32 addr)
|
||||
ulong write_pirq_routing_table(ulong addr)
|
||||
{
|
||||
if (!pirq_routing_table)
|
||||
return addr;
|
||||
|
@ -316,4 +316,4 @@ int acpi_create_madt_lapic_nmi(struct acpi_madt_lapic_nmi *lapic_nmi,
|
||||
u8 cpu, u16 flags, u8 lint);
|
||||
u32 acpi_fill_madt(u32 current);
|
||||
void acpi_create_gnvs(struct acpi_global_nvs *gnvs);
|
||||
u32 write_acpi_tables(u32 start);
|
||||
ulong write_acpi_tables(ulong start);
|
||||
|
@ -456,6 +456,6 @@ int mp_determine_pci_dstirq(int bus, int dev, int func, int pirq);
|
||||
* @addr: start address to write MP table
|
||||
* @return: end address of MP table
|
||||
*/
|
||||
u32 write_mp_table(u32 addr);
|
||||
ulong write_mp_table(ulong addr);
|
||||
|
||||
#endif /* __ASM_MPSPEC_H */
|
||||
|
@ -132,6 +132,6 @@ typedef int (*sfi_table_handler) (struct sfi_table_header *table);
|
||||
* @base: Address to write table to
|
||||
* @return address to use for the next table
|
||||
*/
|
||||
u32 write_sfi_table(u32 base);
|
||||
ulong write_sfi_table(ulong base);
|
||||
|
||||
#endif /*_LINUX_SFI_H */
|
||||
|
@ -65,6 +65,6 @@ void write_tables(void);
|
||||
* @start: start address to write PIRQ routing table
|
||||
* @return: end address of PIRQ routing table
|
||||
*/
|
||||
u32 write_pirq_routing_table(u32 start);
|
||||
ulong write_pirq_routing_table(ulong start);
|
||||
|
||||
#endif /* _X86_TABLES_H_ */
|
||||
|
@ -327,7 +327,7 @@ static void enter_acpi_mode(int pm1_cnt)
|
||||
* QEMU's version of write_acpi_tables is defined in
|
||||
* arch/x86/cpu/qemu/acpi_table.c
|
||||
*/
|
||||
u32 write_acpi_tables(u32 start)
|
||||
ulong write_acpi_tables(ulong start)
|
||||
{
|
||||
u32 current;
|
||||
struct acpi_rsdp *rsdp;
|
||||
@ -345,7 +345,7 @@ u32 write_acpi_tables(u32 start)
|
||||
/* Align ACPI tables to 16 byte */
|
||||
current = ALIGN(current, 16);
|
||||
|
||||
debug("ACPI: Writing ACPI tables at %x\n", start);
|
||||
debug("ACPI: Writing ACPI tables at %lx\n", start);
|
||||
|
||||
/* We need at least an RSDP and an RSDT Table */
|
||||
rsdp = (struct acpi_rsdp *)current;
|
||||
|
@ -365,7 +365,7 @@ static void mptable_add_lintsrc(struct mp_config_table *mc, int bus_isa)
|
||||
bus_isa, 0, MP_APIC_ALL, 1);
|
||||
}
|
||||
|
||||
u32 write_mp_table(u32 addr)
|
||||
ulong write_mp_table(ulong addr)
|
||||
{
|
||||
struct mp_config_table *mc;
|
||||
int ioapic_id, ioapic_ver;
|
||||
|
@ -38,14 +38,14 @@ static void *get_entry_start(struct table_info *tab)
|
||||
tab->table[tab->count] = tab->entry_start;
|
||||
tab->entry_start += sizeof(struct sfi_table_header);
|
||||
|
||||
return (void *)tab->entry_start;
|
||||
return (void *)(uintptr_t)tab->entry_start;
|
||||
}
|
||||
|
||||
static void finish_table(struct table_info *tab, const char *sig, void *entry)
|
||||
{
|
||||
struct sfi_table_header *hdr;
|
||||
|
||||
hdr = (struct sfi_table_header *)(tab->base + tab->ptr);
|
||||
hdr = (struct sfi_table_header *)(uintptr_t)(tab->base + tab->ptr);
|
||||
strcpy(hdr->sig, sig);
|
||||
hdr->len = sizeof(*hdr) + ((ulong)entry - tab->entry_start);
|
||||
hdr->rev = 1;
|
||||
@ -131,7 +131,7 @@ static int sfi_write_xsdt(struct table_info *tab)
|
||||
return 0;
|
||||
}
|
||||
|
||||
u32 write_sfi_table(u32 base)
|
||||
ulong write_sfi_table(ulong base)
|
||||
{
|
||||
struct table_info table;
|
||||
|
||||
|
@ -12,20 +12,13 @@
|
||||
#include <asm/acpi_table.h>
|
||||
#include <asm/coreboot_tables.h>
|
||||
|
||||
#ifdef CONFIG_GENERATE_SMBIOS_TABLE
|
||||
static u32 write_smbios_table_wrapper(u32 addr)
|
||||
{
|
||||
return write_smbios_table(addr);
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Function prototype to write a specific configuration table
|
||||
*
|
||||
* @addr: start address to write the table
|
||||
* @return: end address of the table
|
||||
*/
|
||||
typedef u32 (*table_write)(u32 addr);
|
||||
typedef ulong (*table_write)(ulong addr);
|
||||
|
||||
static table_write table_write_funcs[] = {
|
||||
#ifdef CONFIG_GENERATE_PIRQ_TABLE
|
||||
@ -41,7 +34,7 @@ static table_write table_write_funcs[] = {
|
||||
write_acpi_tables,
|
||||
#endif
|
||||
#ifdef CONFIG_GENERATE_SMBIOS_TABLE
|
||||
write_smbios_table_wrapper,
|
||||
write_smbios_table,
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -165,7 +165,7 @@ struct boot_params *load_zimage(char *image, unsigned long kernel_size,
|
||||
* A very old kernel MUST have its real-mode code
|
||||
* loaded at 0x90000
|
||||
*/
|
||||
if ((u32)setup_base != 0x90000) {
|
||||
if ((ulong)setup_base != 0x90000) {
|
||||
/* Copy the real-mode kernel */
|
||||
memmove((void *)0x90000, setup_base, setup_size);
|
||||
|
||||
|
@ -32,7 +32,7 @@ static LIST_HEAD(fw_list);
|
||||
* be ignored.
|
||||
* @return: 0 on success, or negative value on failure
|
||||
*/
|
||||
static int bios_linker_allocate(struct bios_linker_entry *entry, u32 *addr)
|
||||
static int bios_linker_allocate(struct bios_linker_entry *entry, ulong *addr)
|
||||
{
|
||||
uint32_t size, align;
|
||||
struct fw_file *file;
|
||||
@ -147,7 +147,7 @@ static int bios_linker_add_checksum(struct bios_linker_entry *entry)
|
||||
}
|
||||
|
||||
/* This function loads and patches ACPI tables provided by QEMU */
|
||||
u32 write_acpi_tables(u32 addr)
|
||||
ulong write_acpi_tables(ulong addr)
|
||||
{
|
||||
int i, ret = 0;
|
||||
struct fw_file *file;
|
||||
|
@ -225,7 +225,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)(uintptr_t *addr, int handle);
|
||||
typedef int (*smbios_write_type)(ulong *addr, int handle);
|
||||
|
||||
/**
|
||||
* write_smbios_table() - Write SMBIOS table
|
||||
@ -235,6 +235,6 @@ typedef int (*smbios_write_type)(uintptr_t *addr, int handle);
|
||||
* @addr: start address to write SMBIOS table
|
||||
* @return: end address of SMBIOS table
|
||||
*/
|
||||
uintptr_t write_smbios_table(uintptr_t addr);
|
||||
ulong write_smbios_table(ulong addr);
|
||||
|
||||
#endif /* _SMBIOS_H_ */
|
||||
|
22
lib/smbios.c
22
lib/smbios.c
@ -73,7 +73,7 @@ static int smbios_string_table_len(char *start)
|
||||
return len + 1;
|
||||
}
|
||||
|
||||
static int smbios_write_type0(uintptr_t *current, int handle)
|
||||
static int smbios_write_type0(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type0 *t = (struct smbios_type0 *)*current;
|
||||
int len = sizeof(struct smbios_type0);
|
||||
@ -108,7 +108,7 @@ static int smbios_write_type0(uintptr_t *current, int handle)
|
||||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type1(uintptr_t *current, int handle)
|
||||
static int smbios_write_type1(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type1 *t = (struct smbios_type1 *)*current;
|
||||
int len = sizeof(struct smbios_type1);
|
||||
@ -129,7 +129,7 @@ static int smbios_write_type1(uintptr_t *current, int handle)
|
||||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type2(uintptr_t *current, int handle)
|
||||
static int smbios_write_type2(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type2 *t = (struct smbios_type2 *)*current;
|
||||
int len = sizeof(struct smbios_type2);
|
||||
@ -147,7 +147,7 @@ static int smbios_write_type2(uintptr_t *current, int handle)
|
||||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type3(uintptr_t *current, int handle)
|
||||
static int smbios_write_type3(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type3 *t = (struct smbios_type3 *)*current;
|
||||
int len = sizeof(struct smbios_type3);
|
||||
@ -199,7 +199,7 @@ static void smbios_write_type4_dm(struct smbios_type4 *t)
|
||||
t->processor_version = smbios_add_string(t->eos, name);
|
||||
}
|
||||
|
||||
static int smbios_write_type4(uintptr_t *current, int handle)
|
||||
static int smbios_write_type4(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type4 *t = (struct smbios_type4 *)*current;
|
||||
int len = sizeof(struct smbios_type4);
|
||||
@ -221,7 +221,7 @@ static int smbios_write_type4(uintptr_t *current, int handle)
|
||||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type32(uintptr_t *current, int handle)
|
||||
static int smbios_write_type32(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type32 *t = (struct smbios_type32 *)*current;
|
||||
int len = sizeof(struct smbios_type32);
|
||||
@ -234,7 +234,7 @@ static int smbios_write_type32(uintptr_t *current, int handle)
|
||||
return len;
|
||||
}
|
||||
|
||||
static int smbios_write_type127(uintptr_t *current, int handle)
|
||||
static int smbios_write_type127(ulong *current, int handle)
|
||||
{
|
||||
struct smbios_type127 *t = (struct smbios_type127 *)*current;
|
||||
int len = sizeof(struct smbios_type127);
|
||||
@ -257,10 +257,10 @@ static smbios_write_type smbios_write_funcs[] = {
|
||||
smbios_write_type127
|
||||
};
|
||||
|
||||
uintptr_t write_smbios_table(uintptr_t addr)
|
||||
ulong write_smbios_table(ulong addr)
|
||||
{
|
||||
struct smbios_entry *se;
|
||||
u32 tables;
|
||||
ulong tables;
|
||||
int len = 0;
|
||||
int max_struct_size = 0;
|
||||
int handle = 0;
|
||||
@ -271,7 +271,7 @@ uintptr_t write_smbios_table(uintptr_t addr)
|
||||
/* 16 byte align the table address */
|
||||
addr = ALIGN(addr, 16);
|
||||
|
||||
se = (struct smbios_entry *)addr;
|
||||
se = (struct smbios_entry *)(uintptr_t)addr;
|
||||
memset(se, 0, sizeof(struct smbios_entry));
|
||||
|
||||
addr += sizeof(struct smbios_entry);
|
||||
@ -280,7 +280,7 @@ uintptr_t write_smbios_table(uintptr_t addr)
|
||||
|
||||
/* populate minimum required tables */
|
||||
for (i = 0; i < ARRAY_SIZE(smbios_write_funcs); i++) {
|
||||
int tmp = smbios_write_funcs[i](&addr, handle++);
|
||||
int tmp = smbios_write_funcs[i]((ulong *)&addr, handle++);
|
||||
max_struct_size = max(max_struct_size, tmp);
|
||||
len += tmp;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user