exceptions-64s.S (d0c0c9a13f682157e8610565b6125a31d24434bc) exceptions-64s.S (bc2a9408fa65195288b41751016c36fd00a75a85)
1/*
2 * This file contains the 64-bit "server" PowerPC variant
3 * of the low level exception handling including exception
4 * vectors, exception return, part of the slb and stab
5 * handling and other fixed offset specific things.
6 *
7 * This file is meant to be #included from head_64.S due to
8 * position dependent assembly.

--- 1162 unchanged lines hidden (view full) ---

1171fp_unavailable_common:
1172 EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN)
1173 bne 1f /* if from user, just load it up */
1174 bl .save_nvgprs
1175 DISABLE_INTS
1176 addi r3,r1,STACK_FRAME_OVERHEAD
1177 bl .kernel_fp_unavailable_exception
1178 BUG_OPCODE
1/*
2 * This file contains the 64-bit "server" PowerPC variant
3 * of the low level exception handling including exception
4 * vectors, exception return, part of the slb and stab
5 * handling and other fixed offset specific things.
6 *
7 * This file is meant to be #included from head_64.S due to
8 * position dependent assembly.

--- 1162 unchanged lines hidden (view full) ---

1171fp_unavailable_common:
1172 EXCEPTION_PROLOG_COMMON(0x800, PACA_EXGEN)
1173 bne 1f /* if from user, just load it up */
1174 bl .save_nvgprs
1175 DISABLE_INTS
1176 addi r3,r1,STACK_FRAME_OVERHEAD
1177 bl .kernel_fp_unavailable_exception
1178 BUG_OPCODE
11791: bl .load_up_fpu
11791:
1180#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
1181BEGIN_FTR_SECTION
1182 /* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
1183 * transaction), go do TM stuff
1184 */
1185 rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
1186 bne- 2f
1187END_FTR_SECTION_IFSET(CPU_FTR_TM)
1188#endif
1189 bl .load_up_fpu
1180 b fast_exception_return
1190 b fast_exception_return
1181
1191#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
11922: /* User process was in a transaction */
1193 bl .save_nvgprs
1194 DISABLE_INTS
1195 addi r3,r1,STACK_FRAME_OVERHEAD
1196 bl .fp_unavailable_tm
1197 b .ret_from_except
1198#endif
1182 .align 7
1183 .globl altivec_unavailable_common
1184altivec_unavailable_common:
1185 EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
1186#ifdef CONFIG_ALTIVEC
1187BEGIN_FTR_SECTION
1188 beq 1f
1199 .align 7
1200 .globl altivec_unavailable_common
1201altivec_unavailable_common:
1202 EXCEPTION_PROLOG_COMMON(0xf20, PACA_EXGEN)
1203#ifdef CONFIG_ALTIVEC
1204BEGIN_FTR_SECTION
1205 beq 1f
1206#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
1207 BEGIN_FTR_SECTION_NESTED(69)
1208 /* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
1209 * transaction), go do TM stuff
1210 */
1211 rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
1212 bne- 2f
1213 END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69)
1214#endif
1189 bl .load_up_altivec
1190 b fast_exception_return
1215 bl .load_up_altivec
1216 b fast_exception_return
1217#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
12182: /* User process was in a transaction */
1219 bl .save_nvgprs
1220 DISABLE_INTS
1221 addi r3,r1,STACK_FRAME_OVERHEAD
1222 bl .altivec_unavailable_tm
1223 b .ret_from_except
1224#endif
11911:
1192END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
1193#endif
1194 bl .save_nvgprs
1195 DISABLE_INTS
1196 addi r3,r1,STACK_FRAME_OVERHEAD
1197 bl .altivec_unavailable_exception
1198 b .ret_from_except
1199
1200 .align 7
1201 .globl vsx_unavailable_common
1202vsx_unavailable_common:
1203 EXCEPTION_PROLOG_COMMON(0xf40, PACA_EXGEN)
1204#ifdef CONFIG_VSX
1205BEGIN_FTR_SECTION
1206 beq 1f
12251:
1226END_FTR_SECTION_IFSET(CPU_FTR_ALTIVEC)
1227#endif
1228 bl .save_nvgprs
1229 DISABLE_INTS
1230 addi r3,r1,STACK_FRAME_OVERHEAD
1231 bl .altivec_unavailable_exception
1232 b .ret_from_except
1233
1234 .align 7
1235 .globl vsx_unavailable_common
1236vsx_unavailable_common:
1237 EXCEPTION_PROLOG_COMMON(0xf40, PACA_EXGEN)
1238#ifdef CONFIG_VSX
1239BEGIN_FTR_SECTION
1240 beq 1f
1241#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
1242 BEGIN_FTR_SECTION_NESTED(69)
1243 /* Test if 2 TM state bits are zero. If non-zero (ie. userspace was in
1244 * transaction), go do TM stuff
1245 */
1246 rldicl. r0, r12, (64-MSR_TS_LG), (64-2)
1247 bne- 2f
1248 END_FTR_SECTION_NESTED(CPU_FTR_TM, CPU_FTR_TM, 69)
1249#endif
1207 b .load_up_vsx
1250 b .load_up_vsx
1251#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
12522: /* User process was in a transaction */
1253 bl .save_nvgprs
1254 DISABLE_INTS
1255 addi r3,r1,STACK_FRAME_OVERHEAD
1256 bl .vsx_unavailable_tm
1257 b .ret_from_except
1258#endif
12081:
1209END_FTR_SECTION_IFSET(CPU_FTR_VSX)
1210#endif
1211 bl .save_nvgprs
1212 DISABLE_INTS
1213 addi r3,r1,STACK_FRAME_OVERHEAD
1214 bl .vsx_unavailable_exception
1215 b .ret_from_except
1216
1217 .align 7
1218 .globl tm_unavailable_common
1219tm_unavailable_common:
1220 EXCEPTION_PROLOG_COMMON(0xf60, PACA_EXGEN)
1221 bl .save_nvgprs
12591:
1260END_FTR_SECTION_IFSET(CPU_FTR_VSX)
1261#endif
1262 bl .save_nvgprs
1263 DISABLE_INTS
1264 addi r3,r1,STACK_FRAME_OVERHEAD
1265 bl .vsx_unavailable_exception
1266 b .ret_from_except
1267
1268 .align 7
1269 .globl tm_unavailable_common
1270tm_unavailable_common:
1271 EXCEPTION_PROLOG_COMMON(0xf60, PACA_EXGEN)
1272 bl .save_nvgprs
1273 DISABLE_INTS
1222 addi r3,r1,STACK_FRAME_OVERHEAD
1223 bl .tm_unavailable_exception
1224 b .ret_from_except
1225
1226 .align 7
1227 .globl __end_handlers
1228__end_handlers:
1229

--- 249 unchanged lines hidden ---
1274 addi r3,r1,STACK_FRAME_OVERHEAD
1275 bl .tm_unavailable_exception
1276 b .ret_from_except
1277
1278 .align 7
1279 .globl __end_handlers
1280__end_handlers:
1281

--- 249 unchanged lines hidden ---