qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Faraz Shahbazker <faraz.shahbazker@gmail.com>
To: "Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Aleksandar Markovic" <aleksandar.markovic@rt-rk.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
	Dimitrije Nikolic <dnikolic@wavecomp.com>,
	Stefan Markovic <smarkovic@wavecomp.com>,
	Richard Henderson <richard.henderson@linaro.org>,
	"qemu-devel@nongnu.org Developers" <qemu-devel@nongnu.org>,
	Aleksandar Markovic <amarkovic@wavecomp.com>,
	faraz.shahbazker@mediatek.com,
	Petar Jovanovic <pjovanovic@wavecomp.com>,
	Paul Burton <pburton@wavecomp.com>,
	Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [PATCH v11 08/46] target/mips: Add emulation of nanoMIPS 16-bit branch instructions
Date: Sat, 5 Jun 2021 05:22:39 +0530	[thread overview]
Message-ID: <fb33be73-743f-65a0-7803-9e62f659f889@gmail.com> (raw)
In-Reply-To: <CAAdtpL7jGOxhaqA-gLSRX_6FktEm89AMW-xkV=n+mEjWd-O1iA@mail.gmail.com>

On 5/29/21 7:22 PM, Philippe Mathieu-Daudé wrote:
> On Mon, Aug 20, 2018 at 8:17 PM Aleksandar Markovic
> <aleksandar.markovic@rt-rk.com> wrote:
>>
>> From: Stefan Markovic <smarkovic@wavecomp.com>
>>
>> Add emulation of nanoMIPS 16-bit branch instructions.
>> ...
>> +        /* Compare two registers */
>> +        case OPC_BPOSGE32:
>> +            tcg_gen_setcondi_tl(TCG_COND_GE, bcond, t0, 32);
> 
> This opcode implementation seems incomplete, per the ISA manual:
> 
> If a control transfer instruction (CTI) is executed in the forbidden
> slot of a branch or jump, Release 6 implementations are required to
> signal a Reserved Instruction Exception. A CTI is considered to be one
> of the following instructions: branch, jump, NAL (Release 6), ERET,
> ERETNC (Release 5), DERET, WAIT, or PAUSE (Release 2). An instruction
> is in the forbidden slot if it is the instruction following the
> branch.
> 

This also stems from mistakes in the DSP instruction manual. The 
description text for BPOSGE32C in the nanoMIPS32 DSP manual has been 
blindly copy pasted from microMIPS32 DSP manual. As per the nanoMIPS32 
Instruction Set Technical Reference Manual, Revision 1.01, Chapter 1, 
Introduction, p12 [1] :

"branch delay slots and forbidden slots have been removed."

[1] 
https://s3-eu-west-1.amazonaws.com/downloads-mips/I7200/I7200+product+launch/MIPS_nanomips32_ISA_TRM_01_01_MD01247.pdf

The nanoMIPS architecture is not a revision of MIPS release 6, but an 
entirely new architecture that happens to have a lot in common with MIPS 
release 6. Using the same target sources to implement both means we get 
quite a bit of code reuse, but also that we have to be cognizant of such 
differences.

- farazS


  parent reply	other threads:[~2021-06-05  2:45 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-20 18:16 [Qemu-devel] [PATCH v11 00/46] Add nanoMIPS support - core functionality and system mode Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 01/46] target/mips: Add preprocessor constants for nanoMIPS Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 02/46] target/mips: Add nanoMIPS base instruction set opcodes Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 03/46] target/mips: Add nanoMIPS DSP ASE opcodes Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 04/46] target/mips: Prevent switching mode related to Config3 ISA bit for nanoMIPS Aleksandar Markovic
2018-08-21 11:05   ` Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 05/46] target/mips: Add placeholder and invocation of decode_nanomips_opc() Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 06/46] target/mips: Add nanoMIPS decoding and extraction utilities Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 07/46] target/mips: Add emulation of nanoMIPS 16-bit arithmetic instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 08/46] target/mips: Add emulation of nanoMIPS 16-bit branch instructions Aleksandar Markovic
2021-05-29 13:52   ` Philippe Mathieu-Daudé
2021-05-29 14:20     ` Philippe Mathieu-Daudé
2021-06-04 12:00       ` Aleksandar Rikalo
2021-06-04 23:25       ` Faraz Shahbazker
2021-06-04 23:52     ` Faraz Shahbazker [this message]
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 09/46] target/mips: Add emulation of nanoMIPS 16-bit shift instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 10/46] target/mips: Add emulation of nanoMIPS 16-bit misc instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 11/46] target/mips: Add emulation of nanoMIPS 16-bit load and store instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 12/46] target/mips: Add emulation of nanoMIPS 16-bit logic instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 13/46] target/mips: Add emulation of nanoMIPS 16-bit save and restore instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 14/46] target/mips: Add emulation of some common nanoMIPS 32-bit instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 15/46] target/mips: Add emulation of nanoMIPS instructions MOVE.P and MOVE.PREV Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 16/46] target/mips: Add emulation of nanoMIPS 48-bit instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 17/46] target/mips: Add emulation of nanoMIPS FP instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 18/46] target/mips: Add emulation of misc nanoMIPS instructions (pool32a0) Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 19/46] target/mips: Add emulation of misc nanoMIPS instructions (pool32axf) Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 20/46] target/mips: Add emulation of misc nanoMIPS instructions (p_lsx) Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 21/46] target/mips: Implement emulation of nanoMIPS ROTX instruction Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 22/46] target/mips: Implement emulation of nanoMIPS EXTW instruction Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 23/46] target/mips: Add emulation of nanoMIPS 32-bit load and store instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 24/46] target/mips: Add CP0 Config3 and Config5 fields to DisasContext structure Aleksandar Markovic
2018-08-21 11:04   ` Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 25/46] target/mips: Implement emulation of nanoMIPS LLWP/SCWP pair Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 26/46] target/mips: Add emulation of nanoMIPS 32-bit branch instructions Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 27/46] target/mips: Fix pre-nanoMIPS MT ASE instructions availability control Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 28/46] target/mips: Implement MT ASE support for nanoMIPS Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 29/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 1 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 30/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 2 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 31/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 3 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 32/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 4 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 33/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 5 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 34/46] target/mips: Add emulation of DSP ASE for nanoMIPS - part 6 Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 35/46] target/mips: Add availability control via bit NMS Aleksandar Markovic
2018-08-21 11:02   ` Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 36/46] disas: Add support for nanoMIPS platform Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 37/46] target/mips: Add updating BadInstr and BadInstrX for nanoMIPS Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 38/46] target/mips: Fix ERET/ERETNC behavior related to ADEL exception Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 39/46] elf: Add EM_NANOMIPS value as a valid one for e_machine field Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 40/46] elf: Relax MIPS' elf_check_arch() to accept EM_NANOMIPS too Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 41/46] elf: On elf loading, treat both EM_MIPS and EM_NANOMIPS as legal for MIPS Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 42/46] elf: Don't check FCR31_NAN2008 bit for nanoMIPS Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 43/46] mips_malta: Add basic nanoMIPS boot code for Malta board Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 44/46] mips_malta: Add setting up GT64120 BARs to the nanoMIPS bootloader Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 45/46] mips_malta: Fix semihosting argument passing for nanoMIPS bare metal Aleksandar Markovic
2018-08-20 18:16 ` [Qemu-devel] [PATCH v11 46/46] target/mips: Add definition of nanoMIPS I7200 CPU Aleksandar Markovic
2018-08-21 11:16 ` [Qemu-devel] [PATCH v11 00/46] Add nanoMIPS support - core functionality and system mode Aleksandar Markovic

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=fb33be73-743f-65a0-7803-9e62f659f889@gmail.com \
    --to=faraz.shahbazker@gmail.com \
    --cc=aleksandar.markovic@rt-rk.com \
    --cc=amarkovic@wavecomp.com \
    --cc=aurelien@aurel32.net \
    --cc=dnikolic@wavecomp.com \
    --cc=f4bug@amsat.org \
    --cc=faraz.shahbazker@mediatek.com \
    --cc=pburton@wavecomp.com \
    --cc=peter.maydell@linaro.org \
    --cc=pjovanovic@wavecomp.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=smarkovic@wavecomp.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;
as well as URLs for NNTP newsgroup(s).