Lines Matching refs:regs
40 extern void handle_per_exception(struct pt_regs *regs);
60 extern void pfault_interrupt(struct pt_regs *regs, __u16 error_code);
173 void show_registers(struct pt_regs *regs) in show_registers() argument
179 mode = (regs->psw.mask & PSW_PROBLEM_STATE) ? "User" : "Krnl"; in show_registers()
181 mode, (unsigned long) regs->psw.mask, in show_registers()
182 (unsigned long) regs->psw.addr); in show_registers()
184 regs->gprs[0], regs->gprs[1], regs->gprs[2], regs->gprs[3]); in show_registers()
186 regs->gprs[4], regs->gprs[5], regs->gprs[6], regs->gprs[7]); in show_registers()
188 regs->gprs[8], regs->gprs[9], regs->gprs[10], regs->gprs[11]); in show_registers()
190 regs->gprs[12], regs->gprs[13], regs->gprs[14], regs->gprs[15]); in show_registers()
192 regs->acrs[0], regs->acrs[1], regs->acrs[2], regs->acrs[3]); in show_registers()
194 regs->acrs[4], regs->acrs[5], regs->acrs[6], regs->acrs[7]); in show_registers()
196 regs->acrs[8], regs->acrs[9], regs->acrs[10], regs->acrs[11]); in show_registers()
198 regs->acrs[12], regs->acrs[13], regs->acrs[14], regs->acrs[15]); in show_registers()
205 if (regs->psw.mask & PSW_PROBLEM_STATE) in show_registers()
212 if (__get_user(c, (char *)(regs->psw.addr + i))) { in show_registers()
226 struct pt_regs *regs; in task_show_regs() local
228 regs = __KSTK_PTREGS(task); in task_show_regs()
232 (unsigned long) regs->psw.mask, in task_show_regs()
233 (unsigned long) regs->psw.addr); in task_show_regs()
235 regs->gprs[0], regs->gprs[1], in task_show_regs()
236 regs->gprs[2], regs->gprs[3]); in task_show_regs()
238 regs->gprs[4], regs->gprs[5], in task_show_regs()
239 regs->gprs[6], regs->gprs[7]); in task_show_regs()
241 regs->gprs[8], regs->gprs[9], in task_show_regs()
242 regs->gprs[10], regs->gprs[11]); in task_show_regs()
244 regs->gprs[12], regs->gprs[13], in task_show_regs()
245 regs->gprs[14], regs->gprs[15]); in task_show_regs()
247 regs->acrs[0], regs->acrs[1], in task_show_regs()
248 regs->acrs[2], regs->acrs[3]); in task_show_regs()
250 regs->acrs[4], regs->acrs[5], in task_show_regs()
251 regs->acrs[6], regs->acrs[7]); in task_show_regs()
253 regs->acrs[8], regs->acrs[9], in task_show_regs()
254 regs->acrs[10], regs->acrs[11]); in task_show_regs()
256 regs->acrs[12], regs->acrs[13], in task_show_regs()
257 regs->acrs[14], regs->acrs[15]); in task_show_regs()
263 void die(const char * str, struct pt_regs * regs, long err) in die() argument
269 show_regs(regs); in die()
276 struct pt_regs *regs, siginfo_t *info) in do_trap() argument
282 if (regs->psw.mask & PSW_PROBLEM_STATE) in do_trap()
285 if (regs->psw.mask & PSW_PROBLEM_STATE) { in do_trap()
297 show_regs(regs); in do_trap()
303 show_regs(regs); in do_trap()
307 unsigned long fixup = search_exception_table(regs->psw.addr); in do_trap()
309 regs->psw.addr = fixup; in do_trap()
311 die(str, regs, interruption_code); in do_trap()
315 static inline void *get_check_address(struct pt_regs *regs) in get_check_address() argument
317 return (void *) ADDR_BITS_REMOVE(regs->psw.addr-S390_lowcore.pgm_ilc); in get_check_address()
320 int do_debugger_trap(struct pt_regs *regs,int signal) in do_debugger_trap() argument
322 if(regs->psw.mask&PSW_PROBLEM_STATE) in do_debugger_trap()
334 gdb_stub_handle_exception(regs, signal); in do_debugger_trap()
344 asmlinkage void name(struct pt_regs * regs, long interruption_code) \
346 do_trap(interruption_code, signr, str, regs, NULL); \
350 asmlinkage void name(struct pt_regs * regs, long interruption_code) \
357 do_trap(interruption_code, signr, str, regs, &info); \
363 BUS_ADRERR, get_check_address(regs))
365 ILL_ILLOPN, get_check_address(regs))
367 FPE_INTDIV, get_check_address(regs))
369 ILL_ILLOPN, get_check_address(regs))
371 ILL_PRVOPC, get_check_address(regs))
373 ILL_ILLOPN, get_check_address(regs))
375 ILL_ILLOPN, get_check_address(regs))
378 do_fp_trap(struct pt_regs *regs, void *location, in do_fp_trap() argument
403 "floating point exception", regs, &si); in do_fp_trap()
406 asmlinkage void illegal_op(struct pt_regs * regs, long interruption_code) in illegal_op() argument
412 location = (__u16 *)(regs->psw.addr-S390_lowcore.pgm_ilc); in illegal_op()
418 if (regs->psw.mask & PSW_PROBLEM_STATE) in illegal_op()
421 if (regs->psw.mask & PSW_PROBLEM_STATE) in illegal_op()
427 if(do_debugger_trap(regs,SIGTRAP)) in illegal_op()
431 else if (regs->psw.mask & PSW_PROBLEM_STATE) in illegal_op()
435 signal = math_emu_b3(opcode, regs); in illegal_op()
439 signal = math_emu_ed(opcode, regs); in illegal_op()
442 signal = math_emu_srnm(opcode, regs); in illegal_op()
445 signal = math_emu_stfpc(opcode, regs); in illegal_op()
448 signal = math_emu_lfpc(opcode, regs); in illegal_op()
456 do_fp_trap(regs, location, in illegal_op()
460 "illegal operation", regs, NULL); in illegal_op()
467 specification_exception(struct pt_regs * regs, long interruption_code) in specification_exception() argument
473 location = (__u16 *) get_check_address(regs); in specification_exception()
479 if (regs->psw.mask & PSW_PROBLEM_STATE) in specification_exception()
482 if (regs->psw.mask & PSW_PROBLEM_STATE) { in specification_exception()
493 signal = math_emu_std(opcode, regs); in specification_exception()
497 signal = math_emu_ld(opcode, regs); in specification_exception()
501 signal = math_emu_ste(opcode, regs); in specification_exception()
505 signal = math_emu_le(opcode, regs); in specification_exception()
514 do_fp_trap(regs, location, in specification_exception()
523 "specification exception", regs, &info); in specification_exception()
528 ILL_ILLOPN, get_check_address(regs));
531 asmlinkage void data_exception(struct pt_regs * regs, long interruption_code) in data_exception() argument
537 location = (__u16 *) get_check_address(regs); in data_exception()
543 if (regs->psw.mask & PSW_PROBLEM_STATE) in data_exception()
551 else if (regs->psw.mask & PSW_PROBLEM_STATE) { in data_exception()
562 signal = math_emu_std(opcode, regs); in data_exception()
566 signal = math_emu_ld(opcode, regs); in data_exception()
570 signal = math_emu_ste(opcode, regs); in data_exception()
574 signal = math_emu_le(opcode, regs); in data_exception()
578 signal = math_emu_b3(opcode, regs); in data_exception()
583 signal = math_emu_ed(opcode, regs); in data_exception()
588 signal = math_emu_srnm(opcode, regs); in data_exception()
591 signal = math_emu_stfpc(opcode, regs); in data_exception()
594 signal = math_emu_lfpc(opcode, regs); in data_exception()
609 do_fp_trap(regs, location, in data_exception()
618 "data exception", regs, &info); in data_exception()
672 void handle_per_exception(struct pt_regs *regs) in handle_per_exception() argument
674 if(regs->psw.mask&PSW_PROBLEM_STATE) in handle_per_exception()
681 if(do_debugger_trap(regs,SIGTRAP)) in handle_per_exception()
686 show_regs(regs); in handle_per_exception()
688 regs->psw.mask &= ~PSW_PER_MASK; in handle_per_exception()