diff options
Diffstat (limited to 'arch/blackfin/mm/init.c')
| -rw-r--r-- | arch/blackfin/mm/init.c | 33 |
1 files changed, 12 insertions, 21 deletions
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c index 9c3629b9a689..014a55abd09a 100644 --- a/arch/blackfin/mm/init.c +++ b/arch/blackfin/mm/init.c | |||
| @@ -52,9 +52,14 @@ static unsigned long empty_bad_page_table; | |||
| 52 | 52 | ||
| 53 | static unsigned long empty_bad_page; | 53 | static unsigned long empty_bad_page; |
| 54 | 54 | ||
| 55 | unsigned long empty_zero_page; | 55 | static unsigned long empty_zero_page; |
| 56 | 56 | ||
| 57 | extern unsigned long exception_stack[NR_CPUS][1024]; | 57 | #ifndef CONFIG_EXCEPTION_L1_SCRATCH |
| 58 | #if defined CONFIG_SYSCALL_TAB_L1 | ||
| 59 | __attribute__((l1_data)) | ||
| 60 | #endif | ||
| 61 | static unsigned long exception_stack[NR_CPUS][1024]; | ||
| 62 | #endif | ||
| 58 | 63 | ||
| 59 | struct blackfin_pda cpu_pda[NR_CPUS]; | 64 | struct blackfin_pda cpu_pda[NR_CPUS]; |
| 60 | EXPORT_SYMBOL(cpu_pda); | 65 | EXPORT_SYMBOL(cpu_pda); |
| @@ -117,19 +122,18 @@ asmlinkage void __init init_pda(void) | |||
| 117 | cpu_pda[0].next = &cpu_pda[1]; | 122 | cpu_pda[0].next = &cpu_pda[1]; |
| 118 | cpu_pda[1].next = &cpu_pda[0]; | 123 | cpu_pda[1].next = &cpu_pda[0]; |
| 119 | 124 | ||
| 125 | #ifdef CONFIG_EXCEPTION_L1_SCRATCH | ||
| 126 | cpu_pda[cpu].ex_stack = (unsigned long *)(L1_SCRATCH_START + \ | ||
| 127 | L1_SCRATCH_LENGTH); | ||
| 128 | #else | ||
| 120 | cpu_pda[cpu].ex_stack = exception_stack[cpu + 1]; | 129 | cpu_pda[cpu].ex_stack = exception_stack[cpu + 1]; |
| 130 | #endif | ||
| 121 | 131 | ||
| 122 | #ifdef CONFIG_SMP | 132 | #ifdef CONFIG_SMP |
| 123 | cpu_pda[cpu].imask = 0x1f; | 133 | cpu_pda[cpu].imask = 0x1f; |
| 124 | #endif | 134 | #endif |
| 125 | } | 135 | } |
| 126 | 136 | ||
| 127 | void __cpuinit reserve_pda(void) | ||
| 128 | { | ||
| 129 | printk(KERN_INFO "PDA for CPU%u reserved at %p\n", smp_processor_id(), | ||
| 130 | &cpu_pda[smp_processor_id()]); | ||
| 131 | } | ||
| 132 | |||
| 133 | void __init mem_init(void) | 137 | void __init mem_init(void) |
| 134 | { | 138 | { |
| 135 | unsigned int codek = 0, datak = 0, initk = 0; | 139 | unsigned int codek = 0, datak = 0, initk = 0; |
| @@ -171,19 +175,6 @@ void __init mem_init(void) | |||
| 171 | initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10))); | 175 | initk, codek, datak, DMA_UNCACHED_REGION >> 10, (reservedpages << (PAGE_SHIFT-10))); |
| 172 | } | 176 | } |
| 173 | 177 | ||
| 174 | static int __init sram_init(void) | ||
| 175 | { | ||
| 176 | /* Initialize the blackfin L1 Memory. */ | ||
| 177 | bfin_sram_init(); | ||
| 178 | |||
| 179 | /* Reserve the PDA space for the boot CPU right after we | ||
| 180 | * initialized the scratch memory allocator. | ||
| 181 | */ | ||
| 182 | reserve_pda(); | ||
| 183 | return 0; | ||
| 184 | } | ||
| 185 | pure_initcall(sram_init); | ||
| 186 | |||
| 187 | static void __init free_init_pages(const char *what, unsigned long begin, unsigned long end) | 178 | static void __init free_init_pages(const char *what, unsigned long begin, unsigned long end) |
| 188 | { | 179 | { |
| 189 | unsigned long addr; | 180 | unsigned long addr; |
