aboutsummaryrefslogtreecommitdiffstats
path: root/arch/blackfin/mach-common/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/blackfin/mach-common/head.S')
-rw-r--r--arch/blackfin/mach-common/head.S40
1 files changed, 37 insertions, 3 deletions
diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S
index 191b4e974c4b..7cb21cfcbf28 100644
--- a/arch/blackfin/mach-common/head.S
+++ b/arch/blackfin/mach-common/head.S
@@ -90,12 +90,46 @@ ENTRY(__start)
90 [p0] = R0; 90 [p0] = R0;
91 SSYNC; 91 SSYNC;
92 92
93 /* Save RETX, in case of doublefault */ 93 /* in case of double faults, save a few things */
94 p0.l = ___retx; 94 p0.l = _init_retx;
95 p0.h = ___retx; 95 p0.h = _init_retx;
96 R0 = RETX; 96 R0 = RETX;
97 [P0] = R0; 97 [P0] = R0;
98 98
99#ifdef CONFIG_DEBUG_DOUBLEFAULT
100 /* Only save these if we are storing them,
101 * This happens here, since L1 gets clobbered
102 * below
103 */
104 p0.l = _saved_retx;
105 p0.h = _saved_retx;
106 p1.l = _init_saved_retx;
107 p1.h = _init_saved_retx;
108 r0 = [p0];
109 [p1] = r0;
110
111 p0.l = _saved_dcplb_fault_addr;
112 p0.h = _saved_dcplb_fault_addr;
113 p1.l = _init_saved_dcplb_fault_addr;
114 p1.h = _init_saved_dcplb_fault_addr;
115 r0 = [p0];
116 [p1] = r0;
117
118 p0.l = _saved_icplb_fault_addr;
119 p0.h = _saved_icplb_fault_addr;
120 p1.l = _init_saved_icplb_fault_addr;
121 p1.h = _init_saved_icplb_fault_addr;
122 r0 = [p0];
123 [p1] = r0;
124
125 p0.l = _saved_seqstat;
126 p0.h = _saved_seqstat;
127 p1.l = _init_saved_seqstat;
128 p1.h = _init_saved_seqstat;
129 r0 = [p0];
130 [p1] = r0;
131#endif
132
99 /* Initialize stack pointer */ 133 /* Initialize stack pointer */
100 sp.l = lo(INITIAL_STACK); 134 sp.l = lo(INITIAL_STACK);
101 sp.h = hi(INITIAL_STACK); 135 sp.h = hi(INITIAL_STACK);