All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Maciej W. Rozycki" <macro@linux-mips.org>
To: Fredrik Noring <noring@nocrew.org>
Cc: "Aleksandar Markovic" <amarkovic@wavecomp.com>,
	"Philippe Mathieu-Daudé" <f4bug@amsat.org>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Aurelien Jarno" <aurelien@aurel32.net>,
	"Petar Jovanovic" <pjovanovic@wavecomp.com>,
	"Peter Maydell" <peter.maydell@linaro.org>,
	"Jürgen Urban" <JuergenUrban@gmx.de>,
	qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH v8 00/38] target/mips: Limited support for the R5900
Date: Mon, 22 Oct 2018 19:31:57 +0100 (BST)	[thread overview]
Message-ID: <alpine.LFD.2.21.1810221901170.19280@eddie.linux-mips.org> (raw)
In-Reply-To: <20181022172343.GB2331@sx9>

Hi Maciej,

> > I added ASE_MMI flag along with INSN_R5900, I think this fits better in
> > the overall MIPS for QEMU design.
> 
> Maciej -- can we add "MMI" under "ASEs implemented" in the kernel too,
> even if it is a vendor-specific architecture extension that normally
> isn't counted as an ASE? QEMU simply calls these "vendor specific ASEs".

 I have no authority to approve such a change for the kernel, but it looks 
reasonable to me and I will support you with it, with one reservation 
however.  As this is an ISA extension in the vendor-specific space, I 
think it belongs to a vendor-specific namespace, so as to make it clear it 
is not a generic architectural feature and also to avoid name clashes.

 So it has to be called Toshiba MMI or suchlike, similarly to how I 
requested that for the Longsoon MMI feature in a recent binutils review 
(cf <https://sourceware.org/ml/binutils/2018-07/msg00201.html> and 
binutils commit 8095d2f70e1a ("MIPS/GAS: Split Loongson MMI Instructions 
from loongson2f/3a")), with all the consequences throughout.

> Aleksandar -- please or ASE_MMI to insn_flags here:
> 
> --- a/target/mips/translate_init.inc.c
> +++ b/target/mips/translate_init.inc.c
> @@ -466,7 +466,7 @@ const mips_def_t mips_defs[] =
>  #endif /* !CONFIG_USER_ONLY */
>          .SEGBITS = 32,
>          .PABITS = 32,
> -        .insn_flags = CPU_R5900,
> +        .insn_flags = CPU_R5900 | ASE_MMI,
>          .mmu_type = MMU_TYPE_R4000,
>      },
>      {

 So I think it better be called ASE_TOSHIBA_MMI here.

> Strictly speaking, MADD, MADDU, MULT, MULTU, MULT1, MULTU1, DIV1, DIVU1,
> MADD1, MADDU1, MFHI1, MFLO1, MTHI1 and MTLO1 are not part of what the
> Toshiba TX System RISC TX79 Core Architecture manual specifies as
> "Multimedia Instructions", section B.3.2, on page B-3, even though
> their opcodes are covered by TX79_CLASS_MMI and the decode_tx79_mmi
> function. Can we adjust ASE_MMI for QEMU accordingly?

 NB all but pipeline 1 instructions of these are also implemented by other 
members of the TXx9 family.  They seem to be referred to as just "multiply 
and multiply-add instructions" in the TX79 manual (cf Section B.3.1).

> Also, doesn't it make sense to cover LQ and SQ with ASE_MMI as well, as
> those two really are MMIs?

 And they're certainly listed as such in the TX79 manual (cf Section 
B.3.2).

> Regarding the R5900 FPU: It appears reasonable to introduce an ELF ABI
> variant for the nonstandard R5900 FPU.

 Indeed and in particular given that the R5900 does not produce any FPU 
exceptions it should be quite straightforward for the Linux kernel to 
recognise this specific ABI annotation with ELF binaries and switch its FP 
environment between R5900 native float and IEEE 754 emulated float 
accordingly.  We could then make QEMU run in the user emulation mode do 
the same.

 Of course all the pieces of the toolchain as well as the dynamic loader 
in use would have to taught to prevent incompatible pieces of hard float 
code from being used together.

  Maciej

  parent reply	other threads:[~2018-10-22 18:32 UTC|newest]

Thread overview: 59+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-21 15:30 [Qemu-devel] [PATCH v8 00/38] target/mips: Limited support for the R5900 Fredrik Noring
2018-10-21 15:31 ` [Qemu-devel] [PATCH v8 01/38] target/mips: Define R5900 instructions and CPU preprocessor constants Fredrik Noring
2018-10-21 15:31 ` [Qemu-devel] [PATCH v8 02/38] disas/mips: Define R5900 disassembly constants Fredrik Noring
2018-10-21 15:32 ` [Qemu-devel] [PATCH v8 03/38] target/mips: R5900 Multimedia Instruction overview note Fredrik Noring
2018-10-21 15:33 ` [Qemu-devel] [PATCH v8 04/38] target/mips: Define R5900 MMI class, and LQ and SQ opcode constants Fredrik Noring
2018-10-21 15:33 ` [Qemu-devel] [PATCH v8 05/38] target/mips: Define R5900 MMI{0, 1, 2, 3} subclasses and MMI " Fredrik Noring
2018-10-21 15:34 ` [Qemu-devel] [PATCH v8 06/38] target/mips: Define R5900 MMI0 " Fredrik Noring
2018-10-21 15:34 ` [Qemu-devel] [PATCH v8 07/38] target/mips: Define R5900 MMI1 " Fredrik Noring
2018-10-21 15:34 ` [Qemu-devel] [PATCH v8 08/38] target/mips: Define R5900 MMI2 " Fredrik Noring
2018-10-21 15:34 ` [Qemu-devel] [PATCH v8 09/38] target/mips: Define R5900 MMI3 " Fredrik Noring
2018-10-21 15:35 ` [Qemu-devel] [PATCH v8 10/38] target/mips: Placeholder for R5900 MMI SQ, handle user mode RDHWR Fredrik Noring
2018-10-21 15:35 ` [Qemu-devel] [PATCH v8 11/38] target/mips: Placeholder for R5900 MMI LQ Fredrik Noring
2018-10-21 15:36 ` [Qemu-devel] [PATCH v8 12/38] target/mips: Placeholder for R5900 MMI instruction class Fredrik Noring
2018-10-21 15:36 ` [Qemu-devel] [PATCH v8 13/38] target/mips: Placeholder for R5900 MMI0 instruction subclass Fredrik Noring
2018-10-21 15:36 ` [Qemu-devel] [PATCH v8 14/38] target/mips: Placeholder for R5900 MMI1 " Fredrik Noring
2018-10-21 15:37 ` [Qemu-devel] [PATCH v8 15/38] target/mips: Placeholder for R5900 MMI2 " Fredrik Noring
2018-10-21 15:37 ` [Qemu-devel] [PATCH v8 16/38] target/mips: Placeholder for R5900 MMI3 " Fredrik Noring
2018-10-21 15:38 ` [Qemu-devel] [PATCH v8 17/38] target/mips: Support R5900 three-operand MULT and MULTU Fredrik Noring
2018-10-21 15:38 ` [Qemu-devel] [PATCH v8 18/38] target/mips: Support R5900 three-operand MULT1 and MULTU1 Fredrik Noring
2018-10-21 15:38 ` [Qemu-devel] [PATCH v8 19/38] target/mips: Support R5900 MFLO1, MTLO1, MFHI1 and MTHI1 Fredrik Noring
2018-10-21 15:39 ` [Qemu-devel] [PATCH v8 20/38] target/mips: Support R5900 DIV1 and DIVU1 Fredrik Noring
2018-10-21 15:39 ` [Qemu-devel] [PATCH v8 21/38] target/mips: Support R5900 MOVN, MOVZ and PREF from MIPS IV Fredrik Noring
2018-10-21 15:39 ` [Qemu-devel] [PATCH v8 22/38] target/mips: Support R5900 three-operand MADD and MADD1 Fredrik Noring
2018-10-21 15:40 ` [Qemu-devel] [PATCH v8 23/38] target/mips: Support R5900 three-operand MADDU and MADDU1 Fredrik Noring
2018-10-21 15:40 ` [Qemu-devel] [PATCH v8 24/38] target/mips: R5900 DMULT[U], DDIV[U], LL[D] and SC[D] are user only Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 25/38] tests/tcg/mips: Test R5900 three-operand MULT Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 26/38] tests/tcg/mips: Test R5900 three-operand MULTU Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 27/38] tests/tcg/mips: Test R5900 three-operand MULT1 Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 28/38] tests/tcg/mips: Test R5900 three-operand MULTU1 Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 29/38] tests/tcg/mips: Test R5900 MFLO1 and MFHI1 Fredrik Noring
2018-10-21 15:41 ` [Qemu-devel] [PATCH v8 30/38] tests/tcg/mips: Test R5900 MTLO1 and MTHI1 Fredrik Noring
2018-10-21 15:42 ` [Qemu-devel] [PATCH v8 31/38] tests/tcg/mips: Test R5900 DIV1 Fredrik Noring
2018-10-21 15:42 ` [Qemu-devel] [PATCH v8 32/38] tests/tcg/mips: Test R5900 DIVU1 Fredrik Noring
2018-10-21 15:43 ` [Qemu-devel] [PATCH v8 33/38] tests/tcg/mips: Test R5900 three-operand MADD Fredrik Noring
2018-10-21 15:43 ` [Qemu-devel] [PATCH v8 34/38] tests/tcg/mips: Test R5900 three-operand MADD1 Fredrik Noring
2018-10-21 15:43 ` [Qemu-devel] [PATCH v8 35/38] tests/tcg/mips: Test R5900 three-operand MADDU Fredrik Noring
2018-10-21 15:43 ` [Qemu-devel] [PATCH v8 36/38] tests/tcg/mips: Test R5900 three-operand MADDU1 Fredrik Noring
2018-10-21 15:44 ` [Qemu-devel] [PATCH v8 37/38] target/mips: Define the R5900 CPU Fredrik Noring
2018-10-21 15:44 ` [Qemu-devel] [PATCH v8 38/38] linux-user/mips: Recognise the R5900 CPU model Fredrik Noring
2018-10-22 13:03 ` [Qemu-devel] [PATCH v8 00/38] target/mips: Limited support for the R5900 Aleksandar Markovic
2018-10-22 17:23   ` Fredrik Noring
2018-10-22 18:10     ` Aleksandar Markovic
2018-10-22 19:00       ` Fredrik Noring
2018-10-22 18:31     ` Maciej W. Rozycki [this message]
2018-10-22 18:40       ` Maciej W. Rozycki
2018-10-22 23:16         ` Philippe Mathieu-Daudé
2018-10-23 19:10       ` Fredrik Noring
2018-10-25 17:38         ` Maciej W. Rozycki
2018-10-26 13:42           ` Fredrik Noring
2018-10-22 23:35   ` Philippe Mathieu-Daudé
2018-10-23 19:25   ` Fredrik Noring
2018-10-23 22:04     ` Maciej W. Rozycki
2018-10-23 19:49 [Qemu-devel] [PULL 00/34] MIPS queue for October 2018 - part 2 Peter Maydell
2018-10-23 20:37 ` [Qemu-devel] [PATCH v8 00/38] target/mips: Limited support for the R5900 Fredrik Noring
2018-10-24  8:04   ` Richard Henderson
2018-10-25 17:01     ` Fredrik Noring
2018-10-25 18:03       ` Maciej W. Rozycki
2018-10-25 18:20         ` Fredrik Noring
2018-10-26  7:26         ` Richard Henderson
2018-10-26 13:12           ` Maciej W. Rozycki

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.21.1810221901170.19280@eddie.linux-mips.org \
    --to=macro@linux-mips.org \
    --cc=JuergenUrban@gmx.de \
    --cc=amarkovic@wavecomp.com \
    --cc=aurelien@aurel32.net \
    --cc=f4bug@amsat.org \
    --cc=noring@nocrew.org \
    --cc=peter.maydell@linaro.org \
    --cc=pjovanovic@wavecomp.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.