From 199f8b4cb72c8c0cd52b958382084cee1abe904c Mon Sep 17 00:00:00 2001 From: Miod Vallat Date: Thu, 22 Nov 2007 06:11:52 +0000 Subject: On 88110, skip the faulting instruction in double_reg_fixup() if it can recover, otherwise we'll fault in a loop. --- sys/arch/m88k/m88k/trap.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'sys') diff --git a/sys/arch/m88k/m88k/trap.c b/sys/arch/m88k/m88k/trap.c index ee0f5d36eff..473ee1a1a95 100644 --- a/sys/arch/m88k/m88k/trap.c +++ b/sys/arch/m88k/m88k/trap.c @@ -1,4 +1,4 @@ -/* $OpenBSD: trap.c,v 1.49 2007/11/22 05:53:56 miod Exp $ */ +/* $OpenBSD: trap.c,v 1.50 2007/11/22 06:11:51 miod Exp $ */ /* * Copyright (c) 2004, Miodrag Vallat. * Copyright (c) 1998 Steve Murphree, Jr. @@ -1758,6 +1758,16 @@ double_reg_fixup(struct trapframe *frame) frame->tf_r[regno + 1] = value; } +#ifdef M88110 + if (CPU_IS88110) { + /* skip the offending instruction */ + if (frame->tf_exip & 1) + frame->tf_exip = frame->tf_enip; + else + frame->tf_exip += 4; + } +#endif + return 0; } -- cgit v1.2.3