diff options
author | Simon Glass <sjg@chromium.org> | 2017-01-16 07:04:16 -0700 |
---|---|---|
committer | Bin Meng <bmeng.cn@gmail.com> | 2017-02-07 13:07:23 +0800 |
commit | 1bff83637fdeda3b597ba5b4beb282445d5aeead (patch) | |
tree | d42dde6caeaaa6991886bd3089c0ad86040f5075 /arch | |
parent | fa5fcb3bc60c3c188b91f704b7d0d6b3810c9047 (diff) | |
download | u-boot-1bff83637fdeda3b597ba5b4beb282445d5aeead.zip u-boot-1bff83637fdeda3b597ba5b4beb282445d5aeead.tar.gz u-boot-1bff83637fdeda3b597ba5b4beb282445d5aeead.tar.bz2 |
x86: Move pirq_routing_table to global_data
To avoid using BSS in SPL before SDRAM is set up, move this field to
global_data.
Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Diffstat (limited to 'arch')
-rw-r--r-- | arch/x86/cpu/irq.c | 12 | ||||
-rw-r--r-- | arch/x86/include/asm/global_data.h | 1 |
2 files changed, 6 insertions, 7 deletions
diff --git a/arch/x86/cpu/irq.c b/arch/x86/cpu/irq.c index e3e928b..442d373 100644 --- a/arch/x86/cpu/irq.c +++ b/arch/x86/cpu/irq.c @@ -17,8 +17,6 @@ DECLARE_GLOBAL_DATA_PTR; -static struct irq_routing_table *pirq_routing_table; - bool pirq_check_irq_routed(struct udevice *dev, int link, u8 irq) { struct irq_router *priv = dev_get_priv(dev); @@ -219,7 +217,7 @@ static int create_pirq_routing_table(struct udevice *dev) /* Fix up the table checksum */ rt->checksum = table_compute_checksum(rt, rt->size); - pirq_routing_table = rt; + gd->arch.pirq_routing_table = rt; return 0; } @@ -250,8 +248,8 @@ int irq_router_common_init(struct udevice *dev) return ret; } /* Route PIRQ */ - pirq_route_irqs(dev, pirq_routing_table->slots, - get_irq_slot_count(pirq_routing_table)); + pirq_route_irqs(dev, gd->arch.pirq_routing_table->slots, + get_irq_slot_count(gd->arch.pirq_routing_table)); if (IS_ENABLED(CONFIG_GENERATE_ACPI_TABLE)) irq_enable_sci(dev); @@ -266,10 +264,10 @@ int irq_router_probe(struct udevice *dev) ulong write_pirq_routing_table(ulong addr) { - if (!pirq_routing_table) + if (!gd->arch.pirq_routing_table) return addr; - return copy_pirq_routing_table(addr, pirq_routing_table); + return copy_pirq_routing_table(addr, gd->arch.pirq_routing_table); } static const struct udevice_id irq_router_ids[] = { diff --git a/arch/x86/include/asm/global_data.h b/arch/x86/include/asm/global_data.h index 34e19ef..43a59a3 100644 --- a/arch/x86/include/asm/global_data.h +++ b/arch/x86/include/asm/global_data.h @@ -93,6 +93,7 @@ struct arch_global_data { char *mrc_output; unsigned int mrc_output_len; ulong table; /* Table pointer from previous loader */ + struct irq_routing_table *pirq_routing_table; #ifdef CONFIG_SEABIOS u32 high_table_ptr; u32 high_table_limit; |