From owner-freebsd-bugs Wed May 21 02:37:36 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id CAA00682 for bugs-outgoing; Wed, 21 May 1997 02:37:36 -0700 (PDT) Received: from godzilla.zeta.org.au (godzilla.zeta.org.au [203.2.228.19]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id CAA00664 for ; Wed, 21 May 1997 02:37:31 -0700 (PDT) Received: (from bde@localhost) by godzilla.zeta.org.au (8.8.5/8.6.9) id TAA16022; Wed, 21 May 1997 19:33:59 +1000 Date: Wed, 21 May 1997 19:33:59 +1000 From: Bruce Evans Message-Id: <199705210933.TAA16022@godzilla.zeta.org.au> To: bde@zeta.org.au, yokota@zodiac.mech.utsunomiya-u.ac.jp Subject: Re: trap type 29 on P6 Cc: dg@root.com, freebsd-bugs@freebsd.org, imp@village.org, peter@spinner.DIALix.COM, thorpej@nas.nasa.gov Sender: owner-bugs@freebsd.org X-Loop: FreeBSD.org Precedence: bulk >>I don't like ignoring unexpected exceptions. I would only ignore >>exception 15 on P6's (it's sort of expected there). > >How about this then? > >Alternatively, should we filter this exception at the lower level in >exception.s? There needs to be another exception vector (as in NetBSD). T_RESERVED is a bit bucket for all unexpected exceptions (everything in the range 0-31 that isn't used for something). > #endif /* NISA > 0 */ >+ case T_RESERVED: >+ if (cpu == CPU_686) { >+ printf("stray T_RESERVED trap (ignored)\n"); >+ return; >+ } >+ break; > } The cpu test is slightly easier to do in C (it should probabky be `cpu_class == CPUCLASS_686)', and printfs are much easier to do in C, so handling it in trap.c is best for a test version, but the printf is probably wrong for various reasons - it might cause a nested trap, and it's not clear if there is anything to prevent the trap repeating too many times to be interesting. It may be necessary to handle the user case too, so that the X server doesn't get killed for doing i/o. Bruce