x86: Use unsigned long for address in table generation
authorSimon Glass <sjg@chromium.org>
Mon, 16 Jan 2017 14:03:35 +0000 (07:03 -0700)
committerBin Meng <bmeng.cn@gmail.com>
Mon, 6 Feb 2017 03:38:46 +0000 (11:38 +0800)
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>
13 files changed:
arch/x86/cpu/irq.c
arch/x86/include/asm/acpi_table.h
arch/x86/include/asm/mpspec.h
arch/x86/include/asm/sfi.h
arch/x86/include/asm/tables.h
arch/x86/lib/acpi_table.c
arch/x86/lib/mpspec.c
arch/x86/lib/sfi.c
arch/x86/lib/tables.c
arch/x86/lib/zimage.c
drivers/misc/qfw.c
include/smbios.h
lib/smbios.c

index 9364410a0f83728854df8b01c40e2d369334bf4b..e3e928bb79bd93a3917e3b1b3c6e77c53a5cbd0f 100644 (file)
@@ -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;
index caff4d8a1e0df982049380eedc1582cf1a44d3f1..bbd80a1dd9aa9707a643a5ffef6017ee0a63db43 100644 (file)
@@ -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);
index ad8eba947b9a42aca24499cfad3693030d5d2223..146a4b0cbb89d711a41d55ca8d2bf64e95d4961f 100644 (file)
@@ -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 */
index d1f0f0cb6b872e69909f10493db034ace439716e..d6c44c978a9184fb788991d90755c3b0ecc4e6b2 100644 (file)
@@ -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 */
index 81f98f27745381993f009409dc0536e80026b6c3..d1b23880219ebc6f28be102c86834d7e72de3be4 100644 (file)
@@ -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_ */
index 7001e8ba348932541ecd0ca1f647f7dda6f62759..355456dc19e50366534137a6e977a883c013436a 100644 (file)
@@ -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;
index 6ab43f1055fdc31a2bb7f2b2d08d830392c812b5..516d7b3452ced8173b4f10b04f86ff2a1c94ba0b 100644 (file)
@@ -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;
index 3d3658088ad5b640a225125272e146aeca9c6add..507e037b998b19e78d5c02430cd556b022e23da7 100644 (file)
@@ -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;
 
index 5966e5862a31eddf5c2d39e582a6ec98e0c871d5..4f5fe74288209594017f456cea2fc2ac94ce170a 100644 (file)
 #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
 };
 
index 1b33c771391f49ffe82864ff1582bdfd07e5e97d..b6b0f2beb3a16469449ba7d5664f8d80f20e89d1 100644 (file)
@@ -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);
 
index d43d1d300ac28bf73b763fd9fc8241d49afffe8b..a8af9e0c537f921f57b5b7c4709e7124fc4cd4df 100644 (file)
@@ -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;
index d582d4f7abb2c9258509450cf042da85d9e1f549..c24d00e38dd433da831375a6972cae4d85484fde 100644 (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_ */
index ce1974d86f76751bbc7966372692daebd47d381a..22ca247fec8881ba3dcc87ffc831769f85cf1a4a 100644 (file)
@@ -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;
        }