Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7da8f860 authored by Kumar Gala's avatar Kumar Gala Committed by Paul Mackerras
Browse files

[PATCH] ppc32: Removed non-inlined versions of local_irq* functions



We always use the inlined versions of local_irq_enable, local_irq_disable,
local_save_flags_ptr, and local_irq_restore on ppc32 so the non-inlined
versions where just taking up space.

Signed-off-by: default avatarKumar Gala <kumar.gala@freescale.com>
Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
parent 5f7c6907
Loading
Loading
Loading
Loading
+0 −128
Original line number Diff line number Diff line
@@ -273,134 +273,6 @@ _GLOBAL(low_choose_7447a_dfs)

#endif /* CONFIG_CPU_FREQ_PMAC && CONFIG_6xx */

/* void local_save_flags_ptr(unsigned long *flags) */
_GLOBAL(local_save_flags_ptr)
	mfmsr	r4
	stw	r4,0(r3)
	blr
	/*
	 * Need these nops here for taking over save/restore to
	 * handle lost intrs
	 * -- Cort
	 */
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
_GLOBAL(local_save_flags_ptr_end)

/* void local_irq_restore(unsigned long flags) */
_GLOBAL(local_irq_restore)
/*
 * Just set/clear the MSR_EE bit through restore/flags but do not
 * change anything else.  This is needed by the RT system and makes
 * sense anyway.
 *    -- Cort
 */
	mfmsr 	r4
	/* Copy all except the MSR_EE bit from r4 (current MSR value)
	   to r3.  This is the sort of thing the rlwimi instruction is
	   designed for.  -- paulus. */
	rlwimi	r3,r4,0,17,15
	 /* Check if things are setup the way we want _already_. */
	cmpw	0,r3,r4
	beqlr
1:	SYNC
	mtmsr	r3
	SYNC
	blr
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
_GLOBAL(local_irq_restore_end)

_GLOBAL(local_irq_disable)
	mfmsr	r0		/* Get current interrupt state */
	rlwinm	r3,r0,16+1,32-1,31	/* Extract old value of 'EE' */
	rlwinm	r0,r0,0,17,15	/* clear MSR_EE in r0 */
	SYNC			/* Some chip revs have problems here... */
	mtmsr	r0		/* Update machine state */
	blr			/* Done */
	/*
	 * Need these nops here for taking over save/restore to
	 * handle lost intrs
	 * -- Cort
	 */
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
_GLOBAL(local_irq_disable_end)

_GLOBAL(local_irq_enable)
	mfmsr	r3		/* Get current state */
	ori	r3,r3,MSR_EE	/* Turn on 'EE' bit */
	SYNC			/* Some chip revs have problems here... */
	mtmsr	r3		/* Update machine state */
	blr
	/*
	 * Need these nops here for taking over save/restore to
	 * handle lost intrs
	 * -- Cort
	 */
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
	nop
_GLOBAL(local_irq_enable_end)

/*
 * complement mask on the msr then "or" some values on.
 *     _nmask_and_or_msr(nmask, value_to_or)
+0 −10
Original line number Diff line number Diff line
@@ -272,16 +272,6 @@ EXPORT_SYMBOL(screen_info);
#endif

EXPORT_SYMBOL(__delay);
#ifndef INLINE_IRQS
EXPORT_SYMBOL(local_irq_enable);
EXPORT_SYMBOL(local_irq_enable_end);
EXPORT_SYMBOL(local_irq_disable);
EXPORT_SYMBOL(local_irq_disable_end);
EXPORT_SYMBOL(local_save_flags_ptr);
EXPORT_SYMBOL(local_save_flags_ptr_end);
EXPORT_SYMBOL(local_irq_restore);
EXPORT_SYMBOL(local_irq_restore_end);
#endif
EXPORT_SYMBOL(timer_interrupt);
EXPORT_SYMBOL(irq_desc);
EXPORT_SYMBOL(tb_ticks_per_jiffy);
+0 −16
Original line number Diff line number Diff line
@@ -10,12 +10,8 @@

extern void timer_interrupt(struct pt_regs *);

#define INLINE_IRQS

#define irqs_disabled()	((mfmsr() & MSR_EE) == 0)

#ifdef INLINE_IRQS

static inline void local_irq_disable(void)
{
	unsigned long msr;
@@ -45,18 +41,6 @@ static inline void local_irq_save_ptr(unsigned long *flags)
#define local_irq_save(flags)		local_irq_save_ptr(&flags)
#define local_irq_restore(flags)	mtmsr(flags)

#else

extern void local_irq_enable(void);
extern void local_irq_disable(void);
extern void local_irq_restore(unsigned long);
extern void local_save_flags_ptr(unsigned long *);

#define local_save_flags(flags) local_save_flags_ptr(&flags)
#define local_irq_save(flags) ({local_save_flags(flags);local_irq_disable();})

#endif

extern void do_lost_interrupts(unsigned long);

#define mask_irq(irq) ({if (irq_desc[irq].handler && irq_desc[irq].handler->disable) irq_desc[irq].handler->disable(irq);})