From: Al Viro <viro@ZenIV.linux.org.uk>
To: Richard Henderson <rth@twiddle.net>
Cc: Peter Maydell <peter.maydell@linaro.org>,
QEMU Developers <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [RFC] alpha qemu arithmetic exceptions
Date: Fri, 4 Jul 2014 08:29:37 +0100 [thread overview]
Message-ID: <20140704072937.GU18016@ZenIV.linux.org.uk> (raw)
In-Reply-To: <53B62DCD.6030201@twiddle.net>
On Thu, Jul 03, 2014 at 09:30:05PM -0700, Richard Henderson wrote:
> > Another one is probably not worth bothering - PERR, CTPOP, CTLZ, UNPKBx and PKxB
> > don't accept literal argument. For one thing, as(1) won't let you generate
> > those, so it would have to be explicit
> > .long 0x70001620
> > instead of
> > perr $0,0,$0
> > On DS10 it gives SIGILL; under qemu it succeeds. Trivial to fix, anyway,
> > if we care about that (if (islit) goto invalid_opc; in 1C.030..1C.037).
>
> Is it just 030..037, or everything under opcode 1C?
No, just those.
> Sadly, V4 of the handbook doesn't mention *anything* about not actually
> allowing literals for any of these insns.
It does - compare 4.13.1 (4-155, page 225) with 4.13.2 (two pages later).
The former has
MINxxx Ra.rq,Rb.rq,Rc.wq ! Operate format
Ra.rq,#b.ib,Rc.wq
MINxxx Ra.rq,Rb.rq,Rc.wq ! Operate format
Ra.rq,#b.ib,Rc.wq
The latter -
PERR Ra.rq,Rb.rq,Rc.wq ! Operate format
And yes, PERR with bit 12 set will give invalid instruction trap, while e.g.
MINSB8 won't. The Real Intrudprize Kwality(tm) of technical writing, that,
but the information is, indeed, there. Verified on UP1000, which has 0x307
for feature bits, so all this stuff is really in hardware, not emulated.
OPC1C is a mess - that's one place on alpha where decoder needs more than
upper 6 bits to determine the format of instruction. Most of those guys
are Operate (with an extra twist being that some don't take literals),
but FTOIS and FTOIT are F-P, and only approximately so (its source refers
to integer register, destination to floating point one). Note that
function field is in bits 5--11 for Operate and 5--15 for F-P ;-/ Bit
11 allows to discriminate between those, since FTOIS and FTOIT have function
0x70 and 0x78 resp, while everything else has it lower than 0x40. Hell
knows how that mess had come to be...
Anyway, the situation with literals in OPC1C:
0, 1 (SEXT[BW]). Work, rejected by as(1).
0x30--0x37. Invalid instruction trap, as(1) (correctly) refuses to produce
those.
0x38--0x3f. Work, accepted by as(1).
0x70, 0x78. Those are F-P, no literals for them.
SEXTB/SEXTW are missing ARG_OPRL form in binutils opcodes/alpha-opc.c; probably
not worth bothering...
next prev parent reply other threads:[~2014-07-04 7:30 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-24 4:34 [Qemu-devel] [RFC] alpha qemu arithmetic exceptions Al Viro
2014-06-24 16:52 ` Al Viro
2014-06-24 18:33 ` Richard Henderson
2014-06-24 20:32 ` Al Viro
2014-06-24 20:57 ` Richard Henderson
2014-06-24 21:24 ` Al Viro
2014-06-24 21:32 ` Richard Henderson
2014-06-25 7:01 ` Al Viro
2014-06-25 9:27 ` Peter Maydell
2014-06-25 14:26 ` Al Viro
2014-06-25 17:41 ` Peter Maydell
2014-06-26 5:55 ` Al Viro
2014-06-30 18:39 ` Richard Henderson
2014-06-30 20:56 ` Al Viro
2014-07-01 4:34 ` Al Viro
2014-07-01 5:00 ` Al Viro
2014-07-01 14:31 ` Richard Henderson
2014-07-01 17:03 ` Richard Henderson
2014-07-01 17:50 ` Al Viro
2014-07-01 18:23 ` Peter Maydell
2014-07-01 18:30 ` Richard Henderson
2014-07-01 19:08 ` Peter Maydell
2014-07-02 4:05 ` Al Viro
2014-07-02 5:50 ` Al Viro
2014-07-02 6:17 ` Al Viro
2014-07-02 15:26 ` Richard Henderson
2014-07-02 15:49 ` Al Viro
2014-07-02 14:59 ` Richard Henderson
2014-07-02 15:20 ` Al Viro
2014-07-03 6:51 ` Al Viro
2014-07-03 18:25 ` Al Viro
2014-07-03 20:19 ` Richard Henderson
2014-07-03 22:47 ` Al Viro
2014-07-03 23:05 ` Peter Maydell
2014-07-03 23:22 ` Al Viro
2014-07-04 0:50 ` Al Viro
2014-07-04 4:30 ` Richard Henderson
2014-07-04 7:29 ` Al Viro [this message]
2014-07-05 1:40 ` Al Viro
2014-07-05 5:26 ` Al Viro
2014-07-05 21:09 ` Al Viro
2014-07-05 22:55 ` Al Viro
2014-07-07 14:11 ` Richard Henderson
2014-07-07 15:06 ` Al Viro
2014-07-07 16:20 ` Richard Henderson
2014-07-08 4:20 ` Al Viro
2014-07-08 6:03 ` Richard Henderson
2014-07-08 6:54 ` Al Viro
2014-07-08 7:13 ` Al Viro
2014-07-08 8:05 ` Peter Maydell
2014-07-08 14:53 ` Richard Henderson
2014-07-08 16:13 ` Al Viro
2014-07-08 16:33 ` Peter Maydell
2014-07-08 17:20 ` Al Viro
2014-07-08 19:32 ` Peter Maydell
2014-07-08 20:12 ` Al Viro
2014-07-09 9:19 ` Alex Bennée
2014-07-09 9:04 ` Alex Bennée
2014-07-08 18:12 ` Richard Henderson
2014-07-08 19:02 ` Al Viro
2014-07-08 19:04 ` Richard Henderson
2014-07-08 20:20 ` Al Viro
2014-07-09 4:59 ` Richard Henderson
2014-07-09 5:47 ` Al Viro
2014-07-09 15:14 ` Richard Henderson
2014-07-09 16:41 ` Al Viro
2014-06-24 18:23 ` Richard Henderson
2014-06-24 20:47 ` Al Viro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20140704072937.GU18016@ZenIV.linux.org.uk \
--to=viro@zeniv.linux.org.uk \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).