/* * arch/s390/kernel/irq.c * * S390 version * Copyright (C) 2004 IBM Deutschland Entwicklung GmbH, IBM Corporation * Author(s): Martin Schwidefsky (schwidefsky@de.ibm.com), * * This file contains interrupt related functions. */ #include #include #include #include #include #include /* * show_interrupts is needed by /proc/interrupts. */ int show_interrupts(struct seq_file *p, void *v) { static const char *intrclass_names[] = { "EXT", "I/O", }; int i = *(loff_t *) v, j; if (i == 0) { seq_puts(p, " "); for (j=0; j> (PAGE_SHIFT + THREAD_ORDER)) != 0) { /* Need to switch to the async. stack. */ new -= STACK_FRAME_OVERHEAD; ((struct stack_frame *) new)->back_chain = old; asm volatile(" la 15,0(%0)\n" " basr 14,%2\n" " la 15,0(%1)\n" : : "a" (new), "a" (old), "a" (__do_softirq) : "0", "1", "2", "3", "4", "5", "14", "cc", "memory" ); } else /* We are already on the async stack. */ __do_softirq(); } account_system_vtime(current); __local_bh_enable(); local_irq_restore(flags); } EXPORT_SYMBOL(do_softirq);