From: Leon Alrae <leon.alrae@imgtec.com>
To: "Maciej W. Rozycki" <macro@codesourcery.com>, qemu-devel@nongnu.org
Cc: Sandra Loosemore <sandra@codesourcery.com>,
Aurelien Jarno <aurelien@aurel32.net>
Subject: Re: [Qemu-devel] [PATCH] mips: Add M14K and M14Kc MIPS32r2 microMIPS processors
Date: Wed, 5 Nov 2014 15:25:15 +0000 [thread overview]
Message-ID: <545A415B.4020507@imgtec.com> (raw)
In-Reply-To: <alpine.DEB.1.10.1411031932010.2881@tp.orcam.me.uk>
On 04/11/2014 15:39, Maciej W. Rozycki wrote:
> Add the M14K and M14Kc processors from MIPS Technologies that are the
> original implementation of the microMIPS ISA. They are dual instruction
> set processors, implementing both the microMIPS and the standard MIPSr32
> ISA.
>
> These processors correspond to the M4K and 4KEc CPUs respectively,
> except with support for the microMIPS instruction set added, support for
> the MCU ASE added and two extra interrupt lines, making a total of 8
> hardware interrupts plus 2 software interrupts. The remaining parts of
> the microarchitecture, in particular the pipeline, stayed unchanged.
>
> The presence of the microMIPS ASE is is reflected in the configuration
> added. We currently have no support for the MCU ASE, including in
> particular the ACLR, ASET and IRET instructions in either encoding, and
> we have no support for the extra interrupt lines, including bits in
> CP0.Status and CP0.Cause registers, so these features are not marked,
> making our support diverge from real hardware.
>
> Signed-off-by: Sandra Loosemore <sandra@codesourcery.com>
> Signed-off-by: Maciej W. Rozycki <macro@codesourcery.com>
> ---
> Hopefully we'll get the missing features sometime sooner rather than
> later, they should not be difficult to add. Meanwhile having actual
> microMIPS CPUs to select is I think a worthwhile addition. Please
> apply.
>
> Maciej
>
> qemu-mips-m14k.diff
> Index: qemu-git-trunk/target-mips/translate_init.c
> ===================================================================
> --- qemu-git-trunk.orig/target-mips/translate_init.c 2014-11-03 19:09:06.000000000 +0000
> +++ qemu-git-trunk/target-mips/translate_init.c 2014-11-04 00:33:42.268947442 +0000
> @@ -344,6 +344,47 @@ static const mips_def_t mips_defs[] =
> .mmu_type = MMU_TYPE_R4000,
> },
> {
> + .name = "M14K",
> + .CP0_PRid = 0x00019b00,
> + /* Config1 implemented, fixed mapping MMU,
> + no virtual icache, uncached coherency. */
> + .CP0_Config0 = MIPS_CONFIG0 | (0x2 << CP0C0_KU) | (0x2 << CP0C0_K23) |
> + (0x1 << CP0C0_AR) | (MMU_TYPE_FMT << CP0C0_MT),
> + .CP0_Config1 = MIPS_CONFIG1,
> + .CP0_Config2 = MIPS_CONFIG2,
> + .CP0_Config3 = MIPS_CONFIG3 | (0x2 << CP0C3_ISA) | (1 << CP0C3_VInt),
> + .CP0_LLAddr_rw_bitmask = 0,
> + .CP0_LLAddr_shift = 4,
> + .SYNCI_Step = 32,
> + .CCRes = 2,
> + .CP0_Status_rw_bitmask = 0x1258FF17,
> + .SEGBITS = 32,
> + .PABITS = 32,
> + .insn_flags = CPU_MIPS32R2 | ASE_MICROMIPS,
> + .mmu_type = MMU_TYPE_FMT,
> + },
> + {
> + .name = "M14Kc",
> + /* This is the TLB-based MMU core. */
> + .CP0_PRid = 0x00019c00,
> + .CP0_Config0 = MIPS_CONFIG0 | (0x1 << CP0C0_AR) |
> + (MMU_TYPE_R4000 << CP0C0_MT),
> + .CP0_Config1 = MIPS_CONFIG1 | (15 << CP0C1_MMU) |
> + (0 << CP0C1_IS) | (3 << CP0C1_IL) | (1 << CP0C1_IA) |
> + (0 << CP0C1_DS) | (3 << CP0C1_DL) | (1 << CP0C1_DA),
> + .CP0_Config2 = MIPS_CONFIG2,
> + .CP0_Config3 = MIPS_CONFIG3 | (0x2 << CP0C3_ISA) | (0 << CP0C3_VInt),
> + .CP0_LLAddr_rw_bitmask = 0,
> + .CP0_LLAddr_shift = 4,
> + .SYNCI_Step = 32,
> + .CCRes = 2,
> + .CP0_Status_rw_bitmask = 0x1278FF17,
> + .SEGBITS = 32,
> + .PABITS = 32,
> + .insn_flags = CPU_MIPS32R2 | ASE_MICROMIPS,
> + .mmu_type = MMU_TYPE_R4000,
> + },
> + {
> /* A generic CPU providing MIPS32 Release 5 features.
> FIXME: Eventually this should be replaced by a real CPU model. */
> .name = "mips32r5-generic",
>
The actual microMIPS CPU definition is indeed a worthwile addition -
thanks. It was on my TODO list to upstream such a CPU but I haven't got
round to it.
Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>
Regards,
Leon
next prev parent reply other threads:[~2014-11-05 15:25 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-04 15:39 [Qemu-devel] [PATCH] mips: Add M14K and M14Kc MIPS32r2 microMIPS processors Maciej W. Rozycki
2014-11-05 15:25 ` Leon Alrae [this message]
2014-11-05 15:32 ` 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=545A415B.4020507@imgtec.com \
--to=leon.alrae@imgtec.com \
--cc=aurelien@aurel32.net \
--cc=macro@codesourcery.com \
--cc=qemu-devel@nongnu.org \
--cc=sandra@codesourcery.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).