Commit ee44f4e7 authored by Heiko Carstens's avatar Heiko Carstens
Browse files

s390/traps: Copy monitor code to pt_regs



In case of a monitor call program check the CPU stores the monitor code to
lowcore. Let the program check handler copy it to the pt_regs structure so
it can be used by the monitor call exception handler.

Instead of increasing the pt_regs size add a union which contains both
orig_gpr2 and monitor_code, since orig_gpr2 is not used in case of a
program check.

Reviewed-by: default avatarSven Schnelle <svens@linux.ibm.com>
Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
parent 8cbfd136
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -120,7 +120,10 @@ struct pt_regs {
			unsigned long gprs[NUM_GPRS];
		};
	};
	union {
		unsigned long orig_gpr2;
		unsigned long monitor_code;
	};
	union {
		struct {
			unsigned int int_code;
+1 −0
Original line number Diff line number Diff line
@@ -298,6 +298,7 @@ void noinstr __do_pgm_check(struct pt_regs *regs)
	teid.val = lc->trans_exc_code;
	regs->int_code = lc->pgm_int_code;
	regs->int_parm_long = teid.val;
	regs->monitor_code = lc->monitor_code;
	/*
	 * In case of a guest fault, short-circuit the fault handler and return.
	 * This way the sie64a() function will return 0; fault address and