[S390] irq: external interrupt code passing

The external interrupt handlers have a parameter called ext_int_code.
Besides the name this paramter does not only contain the ext_int_code
but in addition also the "cpu address" (POP) which caused the external
interrupt.
To make the code a bit more obvious pass a struct instead so the called
function can easily distinguish between external interrupt code and
cpu address. The cpu address field however is named "subcode" since
some external interrupt sources do not pass a cpu address but a
different parameter (or none at all).

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Heiko Carstens
2012-03-11 11:59:31 -04:00
committed by Martin Schwidefsky
parent 2215011dd9
commit fde15c3a3a
12 changed files with 32 additions and 30 deletions

View File

@@ -434,14 +434,14 @@ void smp_stop_cpu(void)
* This is the main routine where commands issued by other
* cpus are handled.
*/
static void do_ext_call_interrupt(unsigned int ext_int_code,
static void do_ext_call_interrupt(struct ext_code ext_code,
unsigned int param32, unsigned long param64)
{
unsigned long bits;
int cpu;
cpu = smp_processor_id();
if ((ext_int_code & 0xffff) == 0x1202)
if (ext_code.code == 0x1202)
kstat_cpu(cpu).irqs[EXTINT_EXC]++;
else
kstat_cpu(cpu).irqs[EXTINT_EMS]++;