aboutsummaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/entry.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sparc/kernel/entry.S')
-rw-r--r--arch/sparc/kernel/entry.S40
1 files changed, 20 insertions, 20 deletions
diff --git a/arch/sparc/kernel/entry.S b/arch/sparc/kernel/entry.S
index 68689facaaae..faf9ccd9ef5d 100644
--- a/arch/sparc/kernel/entry.S
+++ b/arch/sparc/kernel/entry.S
@@ -272,17 +272,18 @@ smp4m_ticker:
272 */ 272 */
273maybe_smp4m_msg: 273maybe_smp4m_msg:
274 GET_PROCESSOR4M_ID(o3) 274 GET_PROCESSOR4M_ID(o3)
275 set sun4m_interrupts, %l5 275 sethi %hi(sun4m_irq_percpu), %l5
276 ld [%l5], %o5 276 sll %o3, 2, %o3
277 or %l5, %lo(sun4m_irq_percpu), %o5
277 sethi %hi(0x40000000), %o2 278 sethi %hi(0x40000000), %o2
278 sll %o3, 12, %o3
279 ld [%o5 + %o3], %o1 279 ld [%o5 + %o3], %o1
280 andcc %o1, %o2, %g0 280 ld [%o1 + 0x00], %o3 ! sun4m_irq_percpu[cpu]->pending
281 andcc %o3, %o2, %g0
281 be,a smp4m_ticker 282 be,a smp4m_ticker
282 cmp %l7, 14 283 cmp %l7, 14
283 st %o2, [%o5 + 0x4] 284 st %o2, [%o1 + 0x04] ! sun4m_irq_percpu[cpu]->clear=0x40000000
284 WRITE_PAUSE 285 WRITE_PAUSE
285 ld [%o5], %g0 286 ld [%o1 + 0x00], %g0 ! sun4m_irq_percpu[cpu]->pending
286 WRITE_PAUSE 287 WRITE_PAUSE
287 or %l0, PSR_PIL, %l4 288 or %l0, PSR_PIL, %l4
288 wr %l4, 0x0, %psr 289 wr %l4, 0x0, %psr
@@ -300,16 +301,16 @@ linux_trap_ipi15_sun4m:
300 SAVE_ALL 301 SAVE_ALL
301 sethi %hi(0x80000000), %o2 302 sethi %hi(0x80000000), %o2
302 GET_PROCESSOR4M_ID(o0) 303 GET_PROCESSOR4M_ID(o0)
303 set sun4m_interrupts, %l5 304 sethi %hi(sun4m_irq_percpu), %l5
304 ld [%l5], %o5 305 or %l5, %lo(sun4m_irq_percpu), %o5
305 sll %o0, 12, %o0 306 sll %o0, 2, %o0
306 add %o5, %o0, %o5 307 ld [%o5 + %o0], %o5
307 ld [%o5], %o3 308 ld [%o5 + 0x00], %o3 ! sun4m_irq_percpu[cpu]->pending
308 andcc %o3, %o2, %g0 309 andcc %o3, %o2, %g0
309 be 1f ! Must be an NMI async memory error 310 be 1f ! Must be an NMI async memory error
310 st %o2, [%o5 + 4] 311 st %o2, [%o5 + 0x04] ! sun4m_irq_percpu[cpu]->clear=0x80000000
311 WRITE_PAUSE 312 WRITE_PAUSE
312 ld [%o5], %g0 313 ld [%o5 + 0x00], %g0 ! sun4m_irq_percpu[cpu]->pending
313 WRITE_PAUSE 314 WRITE_PAUSE
314 or %l0, PSR_PIL, %l4 315 or %l0, PSR_PIL, %l4
315 wr %l4, 0x0, %psr 316 wr %l4, 0x0, %psr
@@ -323,12 +324,11 @@ linux_trap_ipi15_sun4m:
3231: 3241:
324 /* NMI async memory error handling. */ 325 /* NMI async memory error handling. */
325 sethi %hi(0x80000000), %l4 326 sethi %hi(0x80000000), %l4
326 sethi %hi(0x4000), %o3 327 sethi %hi(sun4m_irq_global), %o5
327 sub %o5, %o0, %o5 328 ld [%o5 + %lo(sun4m_irq_global)], %l5
328 add %o5, %o3, %l5 329 st %l4, [%l5 + 0x0c] ! sun4m_irq_global->mask_set=0x80000000
329 st %l4, [%l5 + 0xc]
330 WRITE_PAUSE 330 WRITE_PAUSE
331 ld [%l5], %g0 331 ld [%l5 + 0x00], %g0 ! sun4m_irq_global->pending
332 WRITE_PAUSE 332 WRITE_PAUSE
333 or %l0, PSR_PIL, %l4 333 or %l0, PSR_PIL, %l4
334 wr %l4, 0x0, %psr 334 wr %l4, 0x0, %psr
@@ -337,9 +337,9 @@ linux_trap_ipi15_sun4m:
337 WRITE_PAUSE 337 WRITE_PAUSE
338 call sun4m_nmi 338 call sun4m_nmi
339 nop 339 nop
340 st %l4, [%l5 + 0x8] 340 st %l4, [%l5 + 0x08] ! sun4m_irq_global->mask_clear=0x80000000
341 WRITE_PAUSE 341 WRITE_PAUSE
342 ld [%l5], %g0 342 ld [%l5 + 0x00], %g0 ! sun4m_irq_global->pending
343 WRITE_PAUSE 343 WRITE_PAUSE
344 RESTORE_ALL 344 RESTORE_ALL
345 345