Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 13719
b: refs/heads/master
c: b709c08
h: refs/heads/master
i:
  13717: 54691c6
  13715: ab228fb
  13711: 889c901
v: v3
  • Loading branch information
Stephen Rothwell committed Nov 9, 2005
1 parent 10e59ae commit 298a56b
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 31 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 66ba135c5a398df5c3a4b43d84d9df80cbc87c61
refs/heads/master: b709c0832824da20a32a3119911b9f0cf6970452
8 changes: 4 additions & 4 deletions trunk/arch/powerpc/kernel/misc_64.S
Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,12 @@ _GLOBAL(call_do_softirq)
mtlr r0
blr

_GLOBAL(call_handle_IRQ_event)
_GLOBAL(call_ppc_irq_dispatch_handler)
mflr r0
std r0,16(r1)
stdu r1,THREAD_SIZE-112(r6)
mr r1,r6
bl .handle_IRQ_event
stdu r1,THREAD_SIZE-112(r5)
mr r1,r5
bl .ppc_irq_dispatch_handler
ld r1,0(r1)
ld r0,16(r1)
mtlr r0
Expand Down
40 changes: 20 additions & 20 deletions trunk/arch/ppc64/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -157,9 +157,6 @@ void ppc_irq_dispatch_handler(struct pt_regs *regs, int irq)
int cpu = smp_processor_id();
irq_desc_t *desc = get_irq_desc(irq);
irqreturn_t action_ret;
#ifdef CONFIG_IRQSTACKS
struct thread_info *curtp, *irqtp;
#endif

kstat_cpu(cpu).irqs[irq]++;

Expand Down Expand Up @@ -227,20 +224,7 @@ void ppc_irq_dispatch_handler(struct pt_regs *regs, int irq)
for (;;) {
spin_unlock(&desc->lock);

#ifdef CONFIG_IRQSTACKS
/* Switch to the irq stack to handle this */
curtp = current_thread_info();
irqtp = hardirq_ctx[smp_processor_id()];
if (curtp != irqtp) {
irqtp->task = curtp->task;
irqtp->flags = 0;
action_ret = call_handle_IRQ_event(irq, regs, action, irqtp);
irqtp->task = NULL;
if (irqtp->flags)
set_bits(irqtp->flags, &curtp->flags);
} else
#endif
action_ret = handle_IRQ_event(irq, regs, action);
action_ret = handle_IRQ_event(irq, regs, action);

spin_lock(&desc->lock);
if (!noirqdebug)
Expand Down Expand Up @@ -310,6 +294,9 @@ void do_IRQ(struct pt_regs *regs)
void do_IRQ(struct pt_regs *regs)
{
int irq;
#ifdef CONFIG_IRQSTACKS
struct thread_info *curtp, *irqtp;
#endif

irq_enter();

Expand All @@ -330,9 +317,22 @@ void do_IRQ(struct pt_regs *regs)

irq = ppc_md.get_irq(regs);

if (irq >= 0)
ppc_irq_dispatch_handler(regs, irq);
else
if (irq >= 0) {
#ifdef CONFIG_IRQSTACKS
/* Switch to the irq stack to handle this */
curtp = current_thread_info();
irqtp = hardirq_ctx[smp_processor_id()];
if (curtp != irqtp) {
irqtp->task = curtp->task;
irqtp->flags = 0;
call_ppc_irq_dispatch_handler(regs, irq, irqtp);
irqtp->task = NULL;
if (irqtp->flags)
set_bits(irqtp->flags, &curtp->flags);
} else
#endif
ppc_irq_dispatch_handler(regs, irq);
} else
/* That's not SMP safe ... but who cares ? */
ppc_spurious_interrupts++;

Expand Down
8 changes: 4 additions & 4 deletions trunk/arch/ppc64/kernel/misc.S
Original file line number Diff line number Diff line change
Expand Up @@ -78,12 +78,12 @@ _GLOBAL(call_do_softirq)
mtlr r0
blr

_GLOBAL(call_handle_IRQ_event)
_GLOBAL(call_ppc_irq_dispatch_handler)
mflr r0
std r0,16(r1)
stdu r1,THREAD_SIZE-112(r6)
mr r1,r6
bl .handle_IRQ_event
stdu r1,THREAD_SIZE-112(r5)
mr r1,r5
bl .ppc_irq_dispatch_handler
ld r1,0(r1)
ld r0,16(r1)
mtlr r0
Expand Down
4 changes: 2 additions & 2 deletions trunk/include/asm-powerpc/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -488,8 +488,8 @@ extern struct thread_info *softirq_ctx[NR_CPUS];

extern void irq_ctx_init(void);
extern void call_do_softirq(struct thread_info *tp);
extern int call_handle_IRQ_event(int irq, struct pt_regs *regs,
struct irqaction *action, struct thread_info *tp);
extern int call_ppc_irq_dispatch_handler(struct pt_regs *regs, int irq,
struct thread_info *tp);

#define __ARCH_HAS_DO_SOFTIRQ

Expand Down

0 comments on commit 298a56b

Please sign in to comment.