From a99bbccd8738c0d8df270391284db2fae28d8a82 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Mon, 22 Oct 2007 00:19:31 +0800 Subject: [PATCH] Blackfin arch: force irq_flags into the .data section force irq_flags into the .data section by initializing it to the hardware masks that cannot be disabled. this way if we use irq enable/disable functions before the .bss has been zeroed out (as does our l1 relocate/dma functions), we dont hit a problem where bss contains bogus crap. Signed-off-by: Mike Frysinger Signed-off-by: Bryan Wu --- arch/blackfin/mach-common/ints-priority-dc.c | 8 +++++++- arch/blackfin/mach-common/ints-priority-sc.c | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/arch/blackfin/mach-common/ints-priority-dc.c b/arch/blackfin/mach-common/ints-priority-dc.c index 2db3546fc87..c2f05fabedc 100644 --- a/arch/blackfin/mach-common/ints-priority-dc.c +++ b/arch/blackfin/mach-common/ints-priority-dc.c @@ -52,7 +52,13 @@ * - */ -unsigned long irq_flags = 0; +/* Initialize this to an actual value to force it into the .data + * section so that we know it is properly initialized at entry into + * the kernel but before bss is initialized to zero (which is where + * it would live otherwise). The 0x1f magic represents the IRQs we + * cannot actually mask out in hardware. + */ +unsigned long irq_flags = 0x1f; /* The number of spurious interrupts */ atomic_t num_spurious; diff --git a/arch/blackfin/mach-common/ints-priority-sc.c b/arch/blackfin/mach-common/ints-priority-sc.c index e06fe96b6fc..7da5a0a134c 100644 --- a/arch/blackfin/mach-common/ints-priority-sc.c +++ b/arch/blackfin/mach-common/ints-priority-sc.c @@ -58,7 +58,13 @@ * - */ -unsigned long irq_flags = 0; +/* Initialize this to an actual value to force it into the .data + * section so that we know it is properly initialized at entry into + * the kernel but before bss is initialized to zero (which is where + * it would live otherwise). The 0x1f magic represents the IRQs we + * cannot actually mask out in hardware. + */ +unsigned long irq_flags = 0x1f; /* The number of spurious interrupts */ atomic_t num_spurious; -- 2.32.0.93.g670b81a890