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 --- |