aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ia64/kernel/mca_asm.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ia64/kernel/mca_asm.S')
-rw-r--r--arch/ia64/kernel/mca_asm.S27
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
1075END(ia64_get_rnat) 1075END(ia64_get_rnat)
1076
1077
1078// void ia64_set_psr_mc(void)
1079//
1080// Set psr.mc bit to mask MCA/INIT.
1081GLOBAL_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
11001:
1101 br.ret.sptk.many rp
1102END(ia64_set_psr_mc)