mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 22:21:40 +00:00
powerpc: Little endian SMP IPI demux
Add little endian support for demuxing SMP IPIs Signed-off-by: Anton Blanchard <anton@samba.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
4288e343fb
commit
0654de1cd7
@ -232,6 +232,12 @@ void smp_muxed_ipi_message_pass(int cpu, int msg)
|
||||
smp_ops->cause_ipi(cpu, info->data);
|
||||
}
|
||||
|
||||
#ifdef __BIG_ENDIAN__
|
||||
#define IPI_MESSAGE(A) (1 << (24 - 8 * (A)))
|
||||
#else
|
||||
#define IPI_MESSAGE(A) (1 << (8 * (A)))
|
||||
#endif
|
||||
|
||||
irqreturn_t smp_ipi_demux(void)
|
||||
{
|
||||
struct cpu_messages *info = &__get_cpu_var(ipi_message);
|
||||
@ -241,19 +247,14 @@ irqreturn_t smp_ipi_demux(void)
|
||||
|
||||
do {
|
||||
all = xchg(&info->messages, 0);
|
||||
|
||||
#ifdef __BIG_ENDIAN
|
||||
if (all & (1 << (24 - 8 * PPC_MSG_CALL_FUNCTION)))
|
||||
if (all & IPI_MESSAGE(PPC_MSG_CALL_FUNCTION))
|
||||
generic_smp_call_function_interrupt();
|
||||
if (all & (1 << (24 - 8 * PPC_MSG_RESCHEDULE)))
|
||||
if (all & IPI_MESSAGE(PPC_MSG_RESCHEDULE))
|
||||
scheduler_ipi();
|
||||
if (all & (1 << (24 - 8 * PPC_MSG_CALL_FUNC_SINGLE)))
|
||||
if (all & IPI_MESSAGE(PPC_MSG_CALL_FUNC_SINGLE))
|
||||
generic_smp_call_function_single_interrupt();
|
||||
if (all & (1 << (24 - 8 * PPC_MSG_DEBUGGER_BREAK)))
|
||||
if (all & IPI_MESSAGE(PPC_MSG_DEBUGGER_BREAK))
|
||||
debug_ipi_action(0, NULL);
|
||||
#else
|
||||
#error Unsupported ENDIAN
|
||||
#endif
|
||||
} while (info->messages);
|
||||
|
||||
return IRQ_HANDLED;
|
||||
|
Loading…
Reference in New Issue
Block a user