diff options
Diffstat (limited to 'arch/blackfin')
-rw-r--r-- | arch/blackfin/kernel/traps.c | 5 | ||||
-rw-r--r-- | arch/blackfin/mach-common/entry.S | 37 |
2 files changed, 5 insertions, 37 deletions
diff --git a/arch/blackfin/kernel/traps.c b/arch/blackfin/kernel/traps.c index 114277bb46f8..3909f5b35536 100644 --- a/arch/blackfin/kernel/traps.c +++ b/arch/blackfin/kernel/traps.c | |||
@@ -193,15 +193,14 @@ asmlinkage void trap_c(struct pt_regs *fp) | |||
193 | #else | 193 | #else |
194 | /* 0x02 - User Defined, Caught by default */ | 194 | /* 0x02 - User Defined, Caught by default */ |
195 | #endif | 195 | #endif |
196 | /* 0x03 - Atomic test and set */ | 196 | /* 0x03 - User Defined, userspace stack overflow */ |
197 | case VEC_EXCPT03: | 197 | case VEC_EXCPT03: |
198 | info.si_code = SEGV_STACKFLOW; | 198 | info.si_code = SEGV_STACKFLOW; |
199 | sig = SIGSEGV; | 199 | sig = SIGSEGV; |
200 | printk(KERN_EMERG EXC_0x03); | 200 | printk(KERN_EMERG EXC_0x03); |
201 | CHK_DEBUGGER_TRAP(); | 201 | CHK_DEBUGGER_TRAP(); |
202 | break; | 202 | break; |
203 | /* 0x04 - spinlock - handled by _ex_spinlock, | 203 | /* 0x04 - User Defined, Caught by default */ |
204 | getting here is an error */ | ||
205 | /* 0x05 - User Defined, Caught by default */ | 204 | /* 0x05 - User Defined, Caught by default */ |
206 | /* 0x06 - User Defined, Caught by default */ | 205 | /* 0x06 - User Defined, Caught by default */ |
207 | /* 0x07 - User Defined, Caught by default */ | 206 | /* 0x07 - User Defined, Caught by default */ |
diff --git a/arch/blackfin/mach-common/entry.S b/arch/blackfin/mach-common/entry.S index fa4e6336317d..d61bba98fb54 100644 --- a/arch/blackfin/mach-common/entry.S +++ b/arch/blackfin/mach-common/entry.S | |||
@@ -97,17 +97,6 @@ ENTRY(_ex_icplb) | |||
97 | rtx; | 97 | rtx; |
98 | ENDPROC(_ex_icplb) | 98 | ENDPROC(_ex_icplb) |
99 | 99 | ||
100 | ENTRY(_ex_spinlock) | ||
101 | /* Transform this into a syscall - twiddle the syscall vector. */ | ||
102 | p5.l = lo(EVT15); | ||
103 | p5.h = hi(EVT15); | ||
104 | r7.l = _spinlock_bh; | ||
105 | r7.h = _spinlock_bh; | ||
106 | [p5] = r7; | ||
107 | csync; | ||
108 | /* Fall through. */ | ||
109 | ENDPROC(_ex_spinlock) | ||
110 | |||
111 | ENTRY(_ex_syscall) | 100 | ENTRY(_ex_syscall) |
112 | DEBUG_START_HWTRACE(p5, r7) | 101 | DEBUG_START_HWTRACE(p5, r7) |
113 | (R7:6,P5:4) = [sp++]; | 102 | (R7:6,P5:4) = [sp++]; |
@@ -117,26 +106,6 @@ ENTRY(_ex_syscall) | |||
117 | rtx | 106 | rtx |
118 | ENDPROC(_ex_syscall) | 107 | ENDPROC(_ex_syscall) |
119 | 108 | ||
120 | ENTRY(_spinlock_bh) | ||
121 | SAVE_ALL_SYS | ||
122 | /* To end up here, vector 15 was changed - so we have to change it | ||
123 | * back. | ||
124 | */ | ||
125 | p0.l = lo(EVT15); | ||
126 | p0.h = hi(EVT15); | ||
127 | p1.l = _evt_system_call; | ||
128 | p1.h = _evt_system_call; | ||
129 | [p0] = p1; | ||
130 | csync; | ||
131 | r0 = [sp + PT_R0]; | ||
132 | sp += -12; | ||
133 | call _sys_bfin_spinlock; | ||
134 | sp += 12; | ||
135 | [SP + PT_R0] = R0; | ||
136 | RESTORE_ALL_SYS | ||
137 | rti; | ||
138 | ENDPROC(_spinlock_bh) | ||
139 | |||
140 | ENTRY(_ex_soft_bp) | 109 | ENTRY(_ex_soft_bp) |
141 | r7 = retx; | 110 | r7 = retx; |
142 | r7 += -2; | 111 | r7 += -2; |
@@ -775,14 +744,14 @@ ENDPROC(_init_exception_buff) | |||
775 | ALIGN | 744 | ALIGN |
776 | _extable: | 745 | _extable: |
777 | /* entry for each EXCAUSE[5:0] | 746 | /* entry for each EXCAUSE[5:0] |
778 | * This table bmust be in sync with the table in ./kernel/traps.c | 747 | * This table must be in sync with the table in ./kernel/traps.c |
779 | * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined | 748 | * EXCPT instruction can provide 4 bits of EXCAUSE, allowing 16 to be user defined |
780 | */ | 749 | */ |
781 | .long _ex_syscall; /* 0x00 - User Defined - Linux Syscall */ | 750 | .long _ex_syscall; /* 0x00 - User Defined - Linux Syscall */ |
782 | .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */ | 751 | .long _ex_soft_bp /* 0x01 - User Defined - Software breakpoint */ |
783 | .long _ex_trap_c /* 0x02 - User Defined */ | 752 | .long _ex_trap_c /* 0x02 - User Defined */ |
784 | .long _ex_trap_c /* 0x03 - User Defined - Atomic test and set service */ | 753 | .long _ex_trap_c /* 0x03 - User Defined - userspace stack overflow */ |
785 | .long _ex_spinlock /* 0x04 - User Defined */ | 754 | .long _ex_trap_c /* 0x04 - User Defined */ |
786 | .long _ex_trap_c /* 0x05 - User Defined */ | 755 | .long _ex_trap_c /* 0x05 - User Defined */ |
787 | .long _ex_trap_c /* 0x06 - User Defined */ | 756 | .long _ex_trap_c /* 0x06 - User Defined */ |
788 | .long _ex_trap_c /* 0x07 - User Defined */ | 757 | .long _ex_trap_c /* 0x07 - User Defined */ |