Commit 2c1cfb2d authored by Sam Ravnborg's avatar Sam Ravnborg Committed by David S. Miller
Browse files

sparc32: drop sun4c support



Machines with sun4c support are very rare these days, and noone
is using them for any practical purposes.
The sun4c support has been know broken for quite some time too.

So rather than trying to keep it up-to-date, lets get rid of it.
This allows us to do some very welcome cleanup of sparc32 support.

Updated the former sun4c specifc nmi (which was also used
for sun4m UP) to be a generic UP NMI.

Signed-off-by: default avatarSam Ravnborg <sam@ravnborg.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent aa6f0790
Loading
Loading
Loading
Loading
+0 −10
Original line number Diff line number Diff line
@@ -80,16 +80,6 @@
#define TRAP_ENTRY_INTERRUPT(int_level) \
        mov int_level, %l7; rd %psr, %l0; b real_irq_entry; rd %wim, %l3;

/* NMI's (Non Maskable Interrupts) are special, you can't keep them
 * from coming in, and basically if you get one, the shows over. ;(
 * On the sun4c they are usually asynchronous memory errors, on the
 * the sun4m they could be either due to mem errors or a software
 * initiated interrupt from the prom/kern on an SMP box saying "I
 * command you to do CPU tricks, read your mailbox for more info."
 */
#define NMI_TRAP \
        rd %wim, %l3; b linux_trap_nmi_sun4c; mov %psr, %l0; nop;

/* Window overflows/underflows are special and we need to try to be as
 * efficient as possible here....
 */
+0 −8
Original line number Diff line number Diff line
@@ -105,14 +105,6 @@ extern void prom_write(const char *buf, unsigned int len);
extern int prom_startcpu(int cpunode, struct linux_prom_registers *context_table,
			 int context, char *program_counter);

/* Sun4/sun4c specific memory-management startup hook. */

/* Map the passed segment in the given context at the passed
 * virtual address.
 */
extern void prom_putsegment(int context, unsigned long virt_addr,
			    int physical_segment);

/* Initialize the memory lists based upon the prom version. */
void prom_meminit(void);

+1 −1
Original line number Diff line number Diff line
@@ -28,7 +28,7 @@ obj-y += traps_$(BITS).o

# IRQ
obj-y                   += irq_$(BITS).o
obj-$(CONFIG_SPARC32)   += sun4m_irq.o sun4c_irq.o sun4d_irq.o
obj-$(CONFIG_SPARC32)   += sun4m_irq.o sun4d_irq.o

obj-y                   += process_$(BITS).o
obj-y                   += signal_$(BITS).o
+7 −13
Original line number Diff line number Diff line
@@ -317,8 +317,8 @@ maybe_smp4m_msg_out:
	RESTORE_ALL

	.align	4
	.globl	linux_trap_ipi15_sun4m
linux_trap_ipi15_sun4m:
	.globl	linux_trap_ipi15
linux_trap_ipi15:
	SAVE_ALL
	sethi	%hi(0x80000000), %o2
	GET_PROCESSOR4M_ID(o0)
@@ -760,20 +760,12 @@ setcc_trap_handler:
	jmp	%l2		! advance over trap instruction
	rett	%l2 + 0x4	! like this...

#ifndef CONFIG_SMP
	.align	4
	.globl	linux_trap_nmi_sun4c
linux_trap_nmi_sun4c:
	.globl	linux_trap_ipi15
linux_trap_ipi15:
	SAVE_ALL

	/* Ugh, we need to clear the IRQ line.  This is now
	 * a very sun4c specific trap handler...
	 */
	sethi	%hi(interrupt_enable), %l5
	ld	[%l5 + %lo(interrupt_enable)], %l5
	ldub	[%l5], %l6
	andn	%l6, INTS_ENAB, %l6
	stb	%l6, [%l5]

	/* Now it is safe to re-enable traps without recursion. */
	or	%l0, PSR_PIL, %l0
	wr	%l0, PSR_ET, %psr
@@ -797,6 +789,8 @@ linux_trap_nmi_sun4c:

	RESTORE_ALL

#endif /* CONFIG_SMP */

	.align	4
	.globl	invalid_segment_patch1_ff
	.globl	invalid_segment_patch2_ff
+2 −5
Original line number Diff line number Diff line
@@ -111,11 +111,8 @@ 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
#ifndef CONFIG_SMP
t_nmi:	NMI_TRAP                            /* Level 15 (NMI)                */
#else
t_nmi:	TRAP_ENTRY(0x1f, linux_trap_ipi15_sun4m)
#endif
t_nmi:	TRAP_ENTRY(0x1f, linux_trap_ipi15)

t_racc:	TRAP_ENTRY(0x20, do_reg_access)     /* General Register Access Error */
t_iacce:BAD_TRAP(0x21)                      /* Instr Access Error            */
t_bad22:BAD_TRAP(0x22) BAD_TRAP(0x23)
Loading