Subject: trap type 0x29
To: None <port-sparc@netbsd.org>
From: der Mouse <mouse@Rodents.Montreal.QC.CA>
List: port-sparc
Date: 04/22/2003 05:52:46
What's trap type 0x29?

include/trap.h calls it "unused", but I've got a program that works
just dandy on a SS20 with a cgsix card, but when I run it on an LX with
its onboard cgsix, I reliably get

trap type 0x29: pc=0x13ddc npc=0x13de0 psr=41000085<S>

and the process gets a SIGILL.  The instruction at 0x13ddc is

	ld	[%i1+0x14], %o0

and %i1 holds 0x100e0000, the base address at which the cgsix's
registers are mapped.  (This is the same address the same code gets on
the SS20, for what that may be worth.)  The immediately-preceding five
instructions attempt to draw a line (stores to %i1+256, %i1+2116,
%i1+2112, %i1+2116, %i1+2112); looking at the register values and the
code, it's a line in colour 0x44 from (957,840) to (959,849) - nothing
obviously bogus there.

So, I'm wondering what this trap type 0x29 is on the LX, and whether
it's something fixable or avoidable.  Any thoughts?

The cgsix on the LX appears to be perfectly fine in other respects,
including other programs that draw lines.

/~\ The ASCII				der Mouse
\ / Ribbon Campaign
 X  Against HTML	       mouse@rodents.montreal.qc.ca
/ \ Email!	     7D C8 61 52 5D E7 2D 39  4E F1 31 3E E8 B3 27 4B