diff options
Diffstat (limited to 'arch/blackfin/mach-common')
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 22 | ||||
-rw-r--r-- | arch/blackfin/mach-common/head.S | 8 |
2 files changed, 17 insertions, 13 deletions
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index cbc5b6d1ed06..4e8e3fe0ba1c 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -326,8 +326,6 @@ ENTRY(_ex_trap_c) | |||
326 | [p4] = r7; | 326 | [p4] = r7; |
327 | csync; | 327 | csync; |
328 | 328 | ||
329 | #ifndef CONFIG_DEBUG_DOUBLEFAULT | ||
330 | |||
331 | /* | 329 | /* |
332 | * Save these registers, as they are only valid in exception context | 330 | * Save these registers, as they are only valid in exception context |
333 | * (where we are now - as soon as we defer to IRQ5, they can change) | 331 | * (where we are now - as soon as we defer to IRQ5, they can change) |
@@ -347,7 +345,10 @@ ENTRY(_ex_trap_c) | |||
347 | 345 | ||
348 | r6 = retx; | 346 | r6 = retx; |
349 | [p5 + PDA_RETX] = r6; | 347 | [p5 + PDA_RETX] = r6; |
350 | #endif | 348 | |
349 | r6 = SEQSTAT; | ||
350 | [p5 + PDA_SEQSTAT] = r6; | ||
351 | |||
351 | /* Save the state of single stepping */ | 352 | /* Save the state of single stepping */ |
352 | r6 = SYSCFG; | 353 | r6 = SYSCFG; |
353 | [p5 + PDA_SYSCFG] = r6; | 354 | [p5 + PDA_SYSCFG] = r6; |
@@ -444,6 +445,9 @@ ENTRY(_exception_to_level5) | |||
444 | r6 = [p5 + PDA_SYSCFG]; | 445 | r6 = [p5 + PDA_SYSCFG]; |
445 | [sp + PT_SYSCFG] = r6; | 446 | [sp + PT_SYSCFG] = r6; |
446 | 447 | ||
448 | r6 = [p5 + PDA_SEQSTAT]; /* Read back seqstat */ | ||
449 | [sp + PT_SEQSTAT] = r6; | ||
450 | |||
447 | /* Restore the hardware error vector. */ | 451 | /* Restore the hardware error vector. */ |
448 | r7.h = _evt_ivhw; | 452 | r7.h = _evt_ivhw; |
449 | r7.l = _evt_ivhw; | 453 | r7.l = _evt_ivhw; |
@@ -496,7 +500,7 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/ | |||
496 | */ | 500 | */ |
497 | EX_SCRATCH_REG = sp; | 501 | EX_SCRATCH_REG = sp; |
498 | GET_PDA_SAFE(sp); | 502 | GET_PDA_SAFE(sp); |
499 | sp = [sp + PDA_EXSTACK] | 503 | sp = [sp + PDA_EXSTACK]; |
500 | /* Try to deal with syscalls quickly. */ | 504 | /* Try to deal with syscalls quickly. */ |
501 | [--sp] = ASTAT; | 505 | [--sp] = ASTAT; |
502 | [--sp] = (R7:6,P5:4); | 506 | [--sp] = (R7:6,P5:4); |
@@ -532,18 +536,18 @@ ENTRY(_trap) /* Exception: 4th entry into system event table(supervisor mode)*/ | |||
532 | p4.l = lo(DCPLB_FAULT_ADDR); | 536 | p4.l = lo(DCPLB_FAULT_ADDR); |
533 | p4.h = hi(DCPLB_FAULT_ADDR); | 537 | p4.h = hi(DCPLB_FAULT_ADDR); |
534 | r7 = [p4]; | 538 | r7 = [p4]; |
535 | [p5 + PDA_DCPLB] = r7; | 539 | [p5 + PDA_DF_DCPLB] = r7; |
536 | 540 | ||
537 | p4.l = lo(ICPLB_FAULT_ADDR); | 541 | p4.l = lo(ICPLB_FAULT_ADDR); |
538 | p4.h = hi(ICPLB_FAULT_ADDR); | 542 | p4.h = hi(ICPLB_FAULT_ADDR); |
539 | r7 = [p4]; | 543 | r7 = [p4]; |
540 | [p5 + PDA_ICPLB] = r7; | 544 | [p5 + PDA_DF_ICPLB] = r7; |
541 | 545 | ||
542 | r6 = retx; | 546 | r7 = retx; |
543 | [p5 + PDA_RETX] = r6; | 547 | [p5 + PDA_DF_RETX] = r7; |
544 | 548 | ||
545 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ | 549 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ |
546 | [p5 + PDA_SEQSTAT] = r7; | 550 | [p5 + PDA_DF_SEQSTAT] = r7; |
547 | #else | 551 | #else |
548 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ | 552 | r7 = SEQSTAT; /* reason code is in bit 5:0 */ |
549 | #endif | 553 | #endif |
diff --git a/arch/blackfin/mach-common/head.S b/arch/blackfin/mach-common/head.S index 66910121fa6f..9c79dfea2a53 100644 --- a/arch/blackfin/mach-common/head.S +++ b/arch/blackfin/mach-common/head.S | |||
@@ -124,22 +124,22 @@ ENTRY(__start) | |||
124 | * below | 124 | * below |
125 | */ | 125 | */ |
126 | GET_PDA(p0, r0); | 126 | GET_PDA(p0, r0); |
127 | r6 = [p0 + PDA_RETX]; | 127 | r6 = [p0 + PDA_DF_RETX]; |
128 | p1.l = _init_saved_retx; | 128 | p1.l = _init_saved_retx; |
129 | p1.h = _init_saved_retx; | 129 | p1.h = _init_saved_retx; |
130 | [p1] = r6; | 130 | [p1] = r6; |
131 | 131 | ||
132 | r6 = [p0 + PDA_DCPLB]; | 132 | r6 = [p0 + PDA_DF_DCPLB]; |
133 | p1.l = _init_saved_dcplb_fault_addr; | 133 | p1.l = _init_saved_dcplb_fault_addr; |
134 | p1.h = _init_saved_dcplb_fault_addr; | 134 | p1.h = _init_saved_dcplb_fault_addr; |
135 | [p1] = r6; | 135 | [p1] = r6; |
136 | 136 | ||
137 | r6 = [p0 + PDA_ICPLB]; | 137 | r6 = [p0 + PDA_DF_ICPLB]; |
138 | p1.l = _init_saved_icplb_fault_addr; | 138 | p1.l = _init_saved_icplb_fault_addr; |
139 | p1.h = _init_saved_icplb_fault_addr; | 139 | p1.h = _init_saved_icplb_fault_addr; |
140 | [p1] = r6; | 140 | [p1] = r6; |
141 | 141 | ||
142 | r6 = [p0 + PDA_SEQSTAT]; | 142 | r6 = [p0 + PDA_DF_SEQSTAT]; |
143 | p1.l = _init_saved_seqstat; | 143 | p1.l = _init_saved_seqstat; |
144 | p1.h = _init_saved_seqstat; | 144 | p1.h = _init_saved_seqstat; |
145 | [p1] = r6; | 145 | [p1] = r6; |