diff options
author | Mike Frysinger <michael.frysinger@analog.com> | 2007-10-21 12:19:31 -0400 |
---|---|---|
committer | Bryan Wu <bryan.wu@analog.com> | 2007-10-21 12:19:31 -0400 |
commit | a99bbccd8738c0d8df270391284db2fae28d8a82 (patch) | |
tree | 3fbcd0e8fe9a025dfa8c45dbfb7af6f6d5ed8a55 | |
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>
-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 @@ | |||
52 | * - | 52 | * - |
53 | */ | 53 | */ |
54 | 54 | ||
55 | unsigned long irq_flags = 0; | 55 | /* Initialize this to an actual value to force it into the .data |
56 | * section so that we know it is properly initialized at entry into | ||
57 | * the kernel but before bss is initialized to zero (which is where | ||
58 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
59 | * cannot actually mask out in hardware. | ||
60 | */ | ||
61 | unsigned long irq_flags = 0x1f; | ||
56 | 62 | ||
57 | /* The number of spurious interrupts */ | 63 | /* The number of spurious interrupts */ |
58 | atomic_t num_spurious; | 64 | 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 @@ | |||
58 | * - | 58 | * - |
59 | */ | 59 | */ |
60 | 60 | ||
61 | unsigned long irq_flags = 0; | 61 | /* Initialize this to an actual value to force it into the .data |
62 | * section so that we know it is properly initialized at entry into | ||
63 | * the kernel but before bss is initialized to zero (which is where | ||
64 | * it would live otherwise). The 0x1f magic represents the IRQs we | ||
65 | * cannot actually mask out in hardware. | ||
66 | */ | ||
67 | unsigned long irq_flags = 0x1f; | ||
62 | 68 | ||
63 | /* The number of spurious interrupts */ | 69 | /* The number of spurious interrupts */ |
64 | atomic_t num_spurious; | 70 | atomic_t num_spurious; |