diff options
author | Mike Frysinger <michael.frysinger@analog.com> | 2007-10-22 00:19:31 +0800 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-10-22 00:19:31 +0800 |
commit | a99bbccd8738c0d8df270391284db2fae28d8a82 (patch) | |
tree | 3fbcd0e8fe9a025dfa8c45dbfb7af6f6d5ed8a55 /arch/blackfin/mach-common | |
parent | 876a6682aac9b22cf24e0a3a7fea648fd64e112b (diff) |
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 <michael.frysinger@analog.com>
Signed-off-by: Bryan Wu <bryan.wu@analog.com>
Diffstat (limited to 'arch/blackfin/mach-common')
-rw-r--r-- | arch/blackfin/mach-common/ints-priority-dc.c | 8 | ||||
-rw-r--r-- | 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 2db3546fc874..c2f05fabedc1 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 e06fe96b6fc3..7da5a0a134cc 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; |