diff options
Diffstat (limited to 'arch/ia64/kernel/mca_asm.S')
-rw-r--r-- | arch/ia64/kernel/mca_asm.S | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/arch/ia64/kernel/mca_asm.S b/arch/ia64/kernel/mca_asm.S index a06d46548ff..8d2eabe3119 100644 --- a/arch/ia64/kernel/mca_asm.S +++ b/arch/ia64/kernel/mca_asm.S | |||
@@ -1073,3 +1073,30 @@ GLOBAL_ENTRY(ia64_get_rnat) | |||
1073 | mov ar.rsc=3 | 1073 | mov ar.rsc=3 |
1074 | br.ret.sptk.many rp | 1074 | br.ret.sptk.many rp |
1075 | END(ia64_get_rnat) | 1075 | END(ia64_get_rnat) |
1076 | |||
1077 | |||
1078 | // void ia64_set_psr_mc(void) | ||
1079 | // | ||
1080 | // Set psr.mc bit to mask MCA/INIT. | ||
1081 | GLOBAL_ENTRY(ia64_set_psr_mc) | ||
1082 | rsm psr.i | psr.ic // disable interrupts | ||
1083 | ;; | ||
1084 | srlz.d | ||
1085 | ;; | ||
1086 | mov r14 = psr // get psr{36:35,31:0} | ||
1087 | movl r15 = 1f | ||
1088 | ;; | ||
1089 | dep r14 = -1, r14, PSR_MC, 1 // set psr.mc | ||
1090 | ;; | ||
1091 | dep r14 = -1, r14, PSR_IC, 1 // set psr.ic | ||
1092 | ;; | ||
1093 | dep r14 = -1, r14, PSR_BN, 1 // keep bank1 in use | ||
1094 | ;; | ||
1095 | mov cr.ipsr = r14 | ||
1096 | mov cr.ifs = r0 | ||
1097 | mov cr.iip = r15 | ||
1098 | ;; | ||
1099 | rfi | ||
1100 | 1: | ||
1101 | br.ret.sptk.many rp | ||
1102 | END(ia64_set_psr_mc) | ||