dst/connector: Disallow unpliviged users to configure dst
[linux-2.6/verdex.git] / arch / s390 / power / swsusp.c
blobbd1f5c6b0b8c57f12e96ec41f7f8f7538c222855
1 /*
2 * Support for suspend and resume on s390
4 * Copyright IBM Corp. 2009
6 * Author(s): Hans-Joachim Picht <hans@linux.vnet.ibm.com>
8 */
10 #include <asm/system.h>
12 void save_processor_state(void)
14 /* swsusp_arch_suspend() actually saves all cpu register contents.
15 * Machine checks must be disabled since swsusp_arch_suspend() stores
16 * register contents to their lowcore save areas. That's the same
17 * place where register contents on machine checks would be saved.
18 * To avoid register corruption disable machine checks.
19 * We must also disable machine checks in the new psw mask for
20 * program checks, since swsusp_arch_suspend() may generate program
21 * checks. Disabling machine checks for all other new psw masks is
22 * just paranoia.
24 local_mcck_disable();
25 /* Disable lowcore protection */
26 __ctl_clear_bit(0,28);
27 S390_lowcore.external_new_psw.mask &= ~PSW_MASK_MCHECK;
28 S390_lowcore.svc_new_psw.mask &= ~PSW_MASK_MCHECK;
29 S390_lowcore.io_new_psw.mask &= ~PSW_MASK_MCHECK;
30 S390_lowcore.program_new_psw.mask &= ~PSW_MASK_MCHECK;
33 void restore_processor_state(void)
35 S390_lowcore.external_new_psw.mask |= PSW_MASK_MCHECK;
36 S390_lowcore.svc_new_psw.mask |= PSW_MASK_MCHECK;
37 S390_lowcore.io_new_psw.mask |= PSW_MASK_MCHECK;
38 S390_lowcore.program_new_psw.mask |= PSW_MASK_MCHECK;
39 /* Enable lowcore protection */
40 __ctl_set_bit(0,28);
41 local_mcck_enable();