123456789101112131415161718192021222324252627282930313233343536373839 |
- /*
- * This file contains the implementation of the
- * Linux re-IPL support
- *
- * (C) Copyright IBM Corp. 2005
- *
- * Author(s): Volker Sameske (sameske@de.ibm.com)
- *
- */
- #include <linux/kernel.h>
- static unsigned int reipl_diag_rc1;
- static unsigned int reipl_diag_rc2;
- /*
- * re-IPL the system using the last used IPL parameters
- */
- void reipl_diag(void)
- {
- asm volatile (
- " la %%r4,0\n"
- " la %%r5,0\n"
- " diag %%r4,%2,0x308\n"
- "0:\n"
- " st %%r4,%0\n"
- " st %%r5,%1\n"
- ".section __ex_table,\"a\"\n"
- #ifdef CONFIG_64BIT
- " .align 8\n"
- " .quad 0b, 0b\n"
- #else
- " .align 4\n"
- " .long 0b, 0b\n"
- #endif
- ".previous\n"
- : "=m" (reipl_diag_rc1), "=m" (reipl_diag_rc2)
- : "d" (3) : "cc", "4", "5" );
- }
|