@@ -174,32 +174,6 @@ maybe_smp4m_msg_check_resched:
maybe_smp4m_msg_out:
RESTORE_ALL
- .align 4
- .globl linux_trap_ipi15_sun4m
-linux_trap_ipi15_sun4m:
- SAVE_ALL
- sethi %hi(0x80000000), %o2
- GET_PROCESSOR4M_ID(o0)
- sethi %hi(sun4m_irq_percpu), %l5
- or %l5, %lo(sun4m_irq_percpu), %o5
- sll %o0, 2, %o0
- ld [%o5 + %o0], %o5
- ld [%o5 + 0x00], %o3 ! sun4m_irq_percpu[cpu]->pending
- andcc %o3, %o2, %g0
- be sun4m_nmi_error ! Must be an NMI async memory error
- st %o2, [%o5 + 0x04] ! sun4m_irq_percpu[cpu]->clear=0x80000000
- WRITE_PAUSE
- ld [%o5 + 0x00], %g0 ! sun4m_irq_percpu[cpu]->pending
- WRITE_PAUSE
- or %l0, PSR_PIL, %l4
- wr %l4, 0x0, %psr
- WRITE_PAUSE
- wr %l4, PSR_ET, %psr
- WRITE_PAUSE
- call smp4m_cross_call_irq
- nop
- b ret_trap_lockless_ipi
- clr %l6
.globl smp4d_ticker
/* SMP per-cpu ticker interrupts are handled specially. */
@@ -220,44 +194,6 @@ smp4d_ticker:
WRITE_PAUSE
RESTORE_ALL
- .align 4
- .globl linux_trap_ipi15_sun4d
-linux_trap_ipi15_sun4d:
- SAVE_ALL
- sethi %hi(CC_BASE), %o4
- sethi %hi(MXCC_ERR_ME|MXCC_ERR_PEW|MXCC_ERR_ASE|MXCC_ERR_PEE), %o2
- or %o4, (CC_EREG - CC_BASE), %o0
- ldda [%o0] ASI_M_MXCC, %o0
- andcc %o0, %o2, %g0
- bne 1f
- sethi %hi(BB_STAT2), %o2
- lduba [%o2] ASI_M_CTL, %o2
- andcc %o2, BB_STAT2_MASK, %g0
- bne 2f
- or %o4, (CC_ICLR - CC_BASE), %o0
- sethi %hi(1 << 15), %o1
- stha %o1, [%o0] ASI_M_MXCC /* Clear PIL 15 in MXCC's ICLR */
- or %l0, PSR_PIL, %l4
- wr %l4, 0x0, %psr
- WRITE_PAUSE
- wr %l4, PSR_ET, %psr
- WRITE_PAUSE
- call smp4d_cross_call_irq
- nop
- b ret_trap_lockless_ipi
- clr %l6
-
-1: /* MXCC error */
-2: /* BB error */
- /* Disable PIL 15 */
- set CC_IMSK, %l4
- lduha [%l4] ASI_M_MXCC, %l5
- sethi %hi(1 << 15), %l7
- or %l5, %l7, %l5
- stha %l5, [%l4] ASI_M_MXCC
- /* FIXME */
-1: b,a 1b
-
.globl smpleon_ipi
.extern leon_ipi_interrupt
/* SMP per-cpu IPI interrupts are handled specially. */
@@ -618,11 +554,11 @@ sun4m_nmi_error:
#ifndef CONFIG_SMP
.align 4
- .globl linux_trap_ipi15_sun4m
-linux_trap_ipi15_sun4m:
+ .globl linux_trap_ipi15_leon
+linux_trap_ipi15_leon:
SAVE_ALL
- ba sun4m_nmi_error
+ ba sun4m_nmi_error
nop
#endif /* CONFIG_SMP */
@@ -134,10 +134,6 @@ void leonsmp_ipi_interrupt(void);
void leon_cross_call_irq(void);
/* head_32.S */
-extern unsigned int t_nmi[];
-extern unsigned int linux_trap_ipi15_sun4d[];
-extern unsigned int linux_trap_ipi15_sun4m[];
-
extern struct tt_entry trapbase[];
extern struct tt_entry trapbase_cpu1[];
extern struct tt_entry trapbase_cpu2[];
@@ -463,8 +463,5 @@ static const struct sparc32_ipi_ops leon_ipi_ops = {
void __init leon_init_smp(void)
{
- /* Patch ipi15 trap table */
- t_nmi[1] = t_nmi[1] + (linux_trap_ipi15_leon - linux_trap_ipi15_sun4m);
-
sparc32_ipi_ops = &leon_ipi_ops;
}
@@ -354,17 +354,6 @@ int __init pcic_probe(void)
prom_getstring(node, "name", namebuf, 63); namebuf[63] = 0;
strcpy(pbm->prom_name, namebuf);
- {
- extern int pcic_nmi_trap_patch[4];
-
- t_nmi[0] = pcic_nmi_trap_patch[0];
- t_nmi[1] = pcic_nmi_trap_patch[1];
- t_nmi[2] = pcic_nmi_trap_patch[2];
- t_nmi[3] = pcic_nmi_trap_patch[3];
- swift_flush_dcache();
- pcic_regs = pcic->pcic_regs;
- }
-
prom_getstring(prom_root_node, "name", namebuf, 63); namebuf[63] = 0;
{
struct pcic_sn2list *p;
@@ -403,9 +403,6 @@ void __init sun4d_init_smp(void)
{
int i;
- /* Patch ipi15 trap table */
- t_nmi[1] = t_nmi[1] + (linux_trap_ipi15_sun4d - linux_trap_ipi15_sun4m);
-
sparc32_ipi_ops = &sun4d_ipi_ops;
for (i = 0; i < NR_CPUS; i++) {
@@ -43,8 +43,7 @@ t_irq12:TRAP_ENTRY_INTERRUPT(12) /* IRQ Zilog serial chip */
t_irq13:TRAP_ENTRY_INTERRUPT(13) /* IRQ Audio Intr. */
t_irq14:TRAP_ENTRY_INTERRUPT(14) /* IRQ Timer #2 */
- .globl t_nmi
-t_nmi: TRAP_ENTRY(0x1f, linux_trap_ipi15_sun4m)
+t_nmi: TRAP_ENTRY(0x1f, linux_trap_ipi15_leon)
t_racc: TRAP_ENTRY(0x20, do_reg_access) /* General Register Access Error */
t_iacce:BAD_TRAP(0x21) /* Instr Access Error */
@@ -146,7 +145,7 @@ trapbase_cpu1:
TRAP_ENTRY_INTERRUPT(9) TRAP_ENTRY_INTERRUPT(10)
TRAP_ENTRY_INTERRUPT(11) TRAP_ENTRY_INTERRUPT(12)
TRAP_ENTRY_INTERRUPT(13) TRAP_ENTRY_INTERRUPT(14)
- TRAP_ENTRY(0x1f, linux_trap_ipi15_sun4m)
+ TRAP_ENTRY(0x1f, linux_trap_ipi15_leon)
TRAP_ENTRY(0x20, do_reg_access)
BAD_TRAP(0x21)
BAD_TRAP(0x22)
@@ -245,7 +244,7 @@ trapbase_cpu2:
TRAP_ENTRY_INTERRUPT(12)
TRAP_ENTRY_INTERRUPT(13)
TRAP_ENTRY_INTERRUPT(14)
- TRAP_ENTRY(0x1f, linux_trap_ipi15_sun4m)
+ TRAP_ENTRY(0x1f, linux_trap_ipi15_leon)
TRAP_ENTRY(0x20, do_reg_access)
BAD_TRAP(0x21)
BAD_TRAP(0x22)
@@ -345,7 +344,7 @@ trapbase_cpu3:
TRAP_ENTRY_INTERRUPT(12)
TRAP_ENTRY_INTERRUPT(13)
TRAP_ENTRY_INTERRUPT(14)
- TRAP_ENTRY(0x1f, linux_trap_ipi15_sun4m)
+ TRAP_ENTRY(0x1f, linux_trap_ipi15_leon)
TRAP_ENTRY(0x20, do_reg_access)
BAD_TRAP(0x21)
BAD_TRAP(0x22)