Subject: Re: broken KA690?
To: Hugh Graham <hugh@openbsd.org>
From: Lord Isildur <mrfusion@umbar.vaxpower.org>
List: port-vax
Date: 07/15/2001 09:59:52
hello,

On Sun, 15 Jul 2001, Hugh Graham wrote:

> Your machine's not broken. I've not got a reference for which
> instructions are available on which cpu families, but I've never seen
> EMODD work natively on NVAX.  The confusion stems probably from so
> much old code assuming these instructions will be present.

doh!!! it's one of the only D_float instructions not supported!!! 
(yes i have a TM sitting right here.. i had even looked through the 
supported instructions lists and yet posted under the influence 
of, reading the VARM which declares that, among 
others, the instructions for each floating format "Each of these data 
types may only be subset as an entity. This means that if one of these 
data types is included, all the instructions that operate on that data 
type must be included." (cp. 11, sec 2) so, the NVAX violates the VARM!! 
:( 
(now i wonder where _else_ it violates it!!) 
so this is the culprit.. and the TM doesnt even say a word about (that i 
have seen yet, i havent read _all_ 400 or so pages yet :) anything like 
'by the way this violates the varm here, note that we have no emodd' .. 
*isildur grumbles and the strange ways of the DEC gods* 
(the TM also never mentioned that the page table base registers, while 
only needing to be word-aligned on older VAXen, needs to be page-aligned 
on an NVAX) 

> 
> > it's totally reproducible, too, if i try to run a d_floating instruction, 
> > i get the reserved operand exception instead of the thing actually
> > running. Is there some kind of status bit or something that needs to
> > be frobbed? as far as i remember, it worked fine under vms. 
> 
> VMS (and ultrix) have a complete emulation for these instructions.
> Ragge and BJC have made a start with a partial POLYD and full EMODD,
> but writing a complete emulation isn't a trivial project.
> 
yeah, i know what you mean. 
hmm, i guess it is ok to try to catch the emulation from the reserved inst
fault handler, instead of the emulation fault.. 

> See if your quantity is small enough you can get away with a CVTDL,
> CVTLD, SUBD3 sequence instead of an EMODD.

ok, thanks!

happy hacking,
isildur