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

Commit d7cb10d6 authored by Michael Ellerman's avatar Michael Ellerman Committed by Benjamin Herrenschmidt
Browse files

powerpc/irq: Move stack overflow check into a separate function



Makes do_IRQ() shorter and clearer.

Signed-off-by: default avatarMichael Ellerman <michael@ellerman.id.au>
Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
parent f2694ba5
Loading
Loading
Loading
Loading
+17 −14
Original line number Diff line number Diff line
@@ -301,27 +301,30 @@ static inline void handle_one_irq(unsigned int irq)
}
#endif

void do_IRQ(struct pt_regs *regs)
static inline void check_stack_overflow(void)
{
	struct pt_regs *old_regs = set_irq_regs(regs);
	unsigned int irq;

	irq_enter();

#ifdef CONFIG_DEBUG_STACKOVERFLOW
	/* Debugging check for stack overflow: is there less than 2KB free? */
	{
	long sp;

	sp = __get_SP() & (THREAD_SIZE-1);

	/* check for stack overflow: is there less than 2KB free? */
	if (unlikely(sp < (sizeof(struct thread_info) + 2048))) {
		printk("do_IRQ: stack overflow: %ld\n",
			sp - sizeof(struct thread_info));
		dump_stack();
	}
	}
#endif
}

void do_IRQ(struct pt_regs *regs)
{
	struct pt_regs *old_regs = set_irq_regs(regs);
	unsigned int irq;

	irq_enter();

	check_stack_overflow();

	/*
	 * Every platform is required to implement ppc_md.get_irq.