diff options
Diffstat (limited to 'arch/blackfin/mach-common/head.S')
-rw-r--r-- | arch/blackfin/mach-common/head.S | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S index c1dcaebbd3a9..a621ae444810 100644 --- a/arch/blackfin/mach-common/head.S +++ b/arch/blackfin/mach-common/head.S | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/blackfin.h> | 13 | #include <asm/blackfin.h> |
14 | #include <asm/thread_info.h> | 14 | #include <asm/thread_info.h> |
15 | #include <asm/trace.h> | 15 | #include <asm/trace.h> |
16 | #include <asm/asm-offsets.h> | ||
16 | 17 | ||
17 | __INIT | 18 | __INIT |
18 | 19 | ||
@@ -111,33 +112,26 @@ ENTRY(__start) | |||
111 | * This happens here, since L1 gets clobbered | 112 | * This happens here, since L1 gets clobbered |
112 | * below | 113 | * below |
113 | */ | 114 | */ |
114 | p0.l = _saved_retx; | 115 | GET_PDA(p0, r0); |
115 | p0.h = _saved_retx; | 116 | r7 = [p0 + PDA_RETX]; |
116 | p1.l = _init_saved_retx; | 117 | p1.l = _init_saved_retx; |
117 | p1.h = _init_saved_retx; | 118 | p1.h = _init_saved_retx; |
118 | r0 = [p0]; | 119 | [p1] = r7; |
119 | [p1] = r0; | ||
120 | 120 | ||
121 | p0.l = _saved_dcplb_fault_addr; | 121 | r7 = [p0 + PDA_DCPLB]; |
122 | p0.h = _saved_dcplb_fault_addr; | ||
123 | p1.l = _init_saved_dcplb_fault_addr; | 122 | p1.l = _init_saved_dcplb_fault_addr; |
124 | p1.h = _init_saved_dcplb_fault_addr; | 123 | p1.h = _init_saved_dcplb_fault_addr; |
125 | r0 = [p0]; | 124 | [p1] = r7; |
126 | [p1] = r0; | ||
127 | 125 | ||
128 | p0.l = _saved_icplb_fault_addr; | 126 | r7 = [p0 + PDA_ICPLB]; |
129 | p0.h = _saved_icplb_fault_addr; | ||
130 | p1.l = _init_saved_icplb_fault_addr; | 127 | p1.l = _init_saved_icplb_fault_addr; |
131 | p1.h = _init_saved_icplb_fault_addr; | 128 | p1.h = _init_saved_icplb_fault_addr; |
132 | r0 = [p0]; | 129 | [p1] = r7; |
133 | [p1] = r0; | ||
134 | 130 | ||
135 | p0.l = _saved_seqstat; | 131 | r7 = [p0 + PDA_SEQSTAT]; |
136 | p0.h = _saved_seqstat; | ||
137 | p1.l = _init_saved_seqstat; | 132 | p1.l = _init_saved_seqstat; |
138 | p1.h = _init_saved_seqstat; | 133 | p1.h = _init_saved_seqstat; |
139 | r0 = [p0]; | 134 | [p1] = r7; |
140 | [p1] = r0; | ||
141 | #endif | 135 | #endif |
142 | 136 | ||
143 | /* Initialize stack pointer */ | 137 | /* Initialize stack pointer */ |
@@ -255,6 +249,9 @@ ENTRY(_real_start) | |||
255 | sp = sp + p1; | 249 | sp = sp + p1; |
256 | usp = sp; | 250 | usp = sp; |
257 | fp = sp; | 251 | fp = sp; |
252 | sp += -12; | ||
253 | call _init_pda | ||
254 | sp += 12; | ||
258 | jump.l _start_kernel; | 255 | jump.l _start_kernel; |
259 | ENDPROC(_real_start) | 256 | ENDPROC(_real_start) |
260 | 257 | ||