diff options
author | Volker Sameske <sameske@de.ibm.com> | 2005-09-17 04:27:35 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2005-09-17 20:49:59 +0200 |
commit | c782268be8892962a1ae2c09a2e87e7849454ef1 (patch) | |
tree | b1bdba4a96894c8cc6f07f8ec57716dbec5b2854 /arch/s390/kernel/reipl_diag.c | |
parent | [PATCH] s390: show_cpuinfo fix (diff) | |
download | linux-c782268be8892962a1ae2c09a2e87e7849454ef1.tar.xz linux-c782268be8892962a1ae2c09a2e87e7849454ef1.zip |
[PATCH] s390: diag 0x308 reipl
Add code to support the re-IPL method using diagnose 0x308.
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'arch/s390/kernel/reipl_diag.c')
-rw-r--r-- | arch/s390/kernel/reipl_diag.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/arch/s390/kernel/reipl_diag.c b/arch/s390/kernel/reipl_diag.c new file mode 100644 index 000000000000..83cb42bc0b76 --- /dev/null +++ b/arch/s390/kernel/reipl_diag.c @@ -0,0 +1,39 @@ +/* + * 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 __s390x__ + " .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" ); +} |