From: "Maciej W. Rozycki" <macro@linux-mips.org>
To: David Daney <ddaney@caviumnetworks.com>
Cc: Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>,
David Daney <ddaney.cavm@gmail.com>,
linux-mips@linux-mips.org, Ralf Baechle <ralf@linux-mips.org>,
Zubair.Kakakhel@imgtec.com, geert+renesas@glider.be,
peterz@infradead.org, paul.gortmaker@windriver.com,
chenhc@lemote.com, cl@linux.com, Ingo Molnar <mingo@kernel.org>,
richard@nod.at, zajec5@gmail.com, james.hogan@imgtec.com,
keescook@chromium.org, tj@kernel.org, alex@alex-smith.me.uk,
pbonzini@redhat.com, blogic@openwrt.org, paul.burton@imgtec.com,
qais.yousef@imgtec.com, linux-kernel@vger.kernel.org,
markos.chandras@imgtec.com, dengcheng.zhu@imgtec.com,
manuel.lauss@gmail.com, lars.persson@axis.com,
David Daney <david.daney@cavium.com>
Subject: Re: [PATCH 2/3] MIPS: Add full ISA emulator.
Date: Thu, 4 Dec 2014 20:32:24 +0000 (GMT) [thread overview]
Message-ID: <alpine.LFD.2.11.1412042006560.22073@eddie.linux-mips.org> (raw)
In-Reply-To: <54809C88.8060601@caviumnetworks.com>
On Thu, 4 Dec 2014, David Daney wrote:
> > GAS will happily schedule any instruction into a branch delay slot as
> > long as the instruction is not architecturally forbidden there (e.g.
> > ERET), there is no data dependency with the branch that would affect the
> > result produced and the instruction is not an explicit exception trap
> > operation (BREAK, SYSCALL, TEQ, etc.). For some reason, unknown to me all
> > MT ASE instructions are disallowed too. Anything else -- free to go in!
> >
> > Of course instructions can be scheduled into branch delay slots manually
> > too, in handcoded assembly, and that has to continue working.
> >
>
> It is not difficult to also emulate the trapping instructions. In order to
> move forward, I will implement the trapping instructions in my emulator for
> the next patch.
I'd be more concerned about getting the more exotic instructions or cases
right (did you get MADDU right for SmartMIPS processors and set the ACX
register on them?) -- how do you propose to validate and regression-test
the emulator in a reproducible manner?
The combination of the rare case of an instruction being placed in an FP
branch delay slot and the rarity of some instructions themselves makes me
scared of bugs lurking there forever and occasionally biting people -- who
may not be aware that software emulation is involved let alone be capable
to track them down -- in the most frustrating way. To say nothing of the
infinite amount of effort to maintain the emulator associated with adding
architectural and vendor-specific instructions. See how much effort has
been put into QEMU and still it does not get all the MIPS instruction set
bits right.
Maciej
next prev parent reply other threads:[~2014-12-04 20:32 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-03 23:44 [PATCH 0/3] MIPS: Get ready for non-executable stack David Daney
2014-12-03 23:44 ` [PATCH 1/3] MIPS: Add FPU emulator counter for non-FPU instructions emulated David Daney
2014-12-03 23:44 ` [PATCH 2/3] MIPS: Add full ISA emulator David Daney
2014-12-03 23:55 ` Leonid Yegoshin
2014-12-04 0:20 ` David Daney
2014-12-04 0:52 ` Leonid Yegoshin
2014-12-04 1:29 ` David Daney
[not found] ` <547FBF63.70802@imgtec.com>
2014-12-04 2:21 ` David Daney
2014-12-04 10:16 ` Paul Burton
2014-12-04 10:45 ` Qais Yousef
2014-12-04 11:49 ` Maciej W. Rozycki
2014-12-04 17:40 ` David Daney
2014-12-04 20:32 ` Maciej W. Rozycki [this message]
2014-12-03 23:44 ` [PATCH 3/3] MIPS: Use full instruction emulation for FPU emulator delay slot emulation David Daney
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=alpine.LFD.2.11.1412042006560.22073@eddie.linux-mips.org \
--to=macro@linux-mips.org \
--cc=Leonid.Yegoshin@imgtec.com \
--cc=Zubair.Kakakhel@imgtec.com \
--cc=alex@alex-smith.me.uk \
--cc=blogic@openwrt.org \
--cc=chenhc@lemote.com \
--cc=cl@linux.com \
--cc=david.daney@cavium.com \
--cc=ddaney.cavm@gmail.com \
--cc=ddaney@caviumnetworks.com \
--cc=dengcheng.zhu@imgtec.com \
--cc=geert+renesas@glider.be \
--cc=james.hogan@imgtec.com \
--cc=keescook@chromium.org \
--cc=lars.persson@axis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=manuel.lauss@gmail.com \
--cc=markos.chandras@imgtec.com \
--cc=mingo@kernel.org \
--cc=paul.burton@imgtec.com \
--cc=paul.gortmaker@windriver.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=qais.yousef@imgtec.com \
--cc=ralf@linux-mips.org \
--cc=richard@nod.at \
--cc=tj@kernel.org \
--cc=zajec5@gmail.com \
/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
Powered by JetHome