Commit 52b739e2 authored by Heiko Carstens's avatar Heiko Carstens Committed by Vasily Gorbik
Browse files

s390/traps: get rid of magic cast for program interruption code



Add a proper union in lowcore to reflect architecture and get rid of a
"magic" cast in order to read the full program interruption code.

Signed-off-by: default avatarHeiko Carstens <hca@linux.ibm.com>
Signed-off-by: default avatarVasily Gorbik <gor@linux.ibm.com>
parent 0ecf337f
Loading
Loading
Loading
Loading
+7 −2
Original line number Diff line number Diff line
@@ -34,8 +34,13 @@ struct lowcore {
		__u32 ext_int_code_addr;
	};
	__u32	svc_int_code;			/* 0x0088 */
	union {
		struct {
			__u16	pgm_ilc;	/* 0x008c */
			__u16	pgm_code;	/* 0x008e */
		};
		__u32 pgm_int_code;
	};
	__u32	data_exc_code;			/* 0x0090 */
	__u16	mon_class_num;			/* 0x0094 */
	__u8	per_code;			/* 0x0096 */
+1 −1
Original line number Diff line number Diff line
@@ -297,7 +297,7 @@ void noinstr __do_pgm_check(struct pt_regs *regs)
	unsigned int trapnr;
	irqentry_state_t state;

	regs->int_code = *(u32 *)&S390_lowcore.pgm_ilc;
	regs->int_code = S390_lowcore.pgm_int_code;
	regs->int_parm_long = S390_lowcore.trans_exc_code;

	state = irqentry_enter(regs);