This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

RE: [PATCH][MIPS] Add Global INValidate instructions


Hi Faraz,

> Resubmitting with correct format.

 Thank you!

> The following patch adds support for the Global INValidate (GINV)
> instructions in Release 6 of the MIPS Architecture.  The changes are:
> * New instruction GINVI, GINVT: enabled by option `-mginv'.
> * New instruction GINVGT: enabled by `-mginv -mvirt'.
> * Bit-17 in MIPS.abiflags is set when GINV extension is enabled.
> 
> The new ginv* instructions are described in Section 3.2 of the MIPS
> Instruction Set v6.06
> (https://www.mips.com/?do-download=the-mips32-instruction-set-v6-06)

 Same as with the CRC patch -- please separate the commit description 
(which will be reviewed) from any extra discussion, and avoid volatile web 
links.

> This patch cannot be committed yet, since copyright assignment to FSF
> from the new MIPS entity is still pending. Please review and approve
> for a future commit.

 This change also triggers failures:

mips-sgi-irix6  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips-sgi-irix6  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips-sgi-irix6  +FAIL: mips ginv-error
mips-sgi-irix6  +FAIL: mips ginv-virt-error
mips64-freebsd  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64-freebsd  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64-freebsd  +FAIL: mips ginv-error
mips64-freebsd  +FAIL: mips ginv-virt-error
mips64-img-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64-img-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64-img-linux  +FAIL: mips ginv-error
mips64-img-linux  +FAIL: mips ginv-virt-error
mips64-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64-linux  +FAIL: mips ginv-error
mips64-linux  +FAIL: mips ginv-virt-error
mips64-mti-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64-mti-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64-mti-linux  +FAIL: mips ginv-error
mips64-mti-linux  +FAIL: mips ginv-virt-error
mips64-openbsd  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64-openbsd  +FAIL: MIPS Global INValidate instructions (mips64r6)
mips64-openbsd  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64-openbsd  +FAIL: MIPS Global INValidate instructions disassembly (mips64r6)
mips64-openbsd  +FAIL: mips ginv-error
mips64-openbsd  +FAIL: mips ginv-virt-error
mips64el-freebsd  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64el-freebsd  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64el-freebsd  +FAIL: mips ginv-error
mips64el-freebsd  +FAIL: mips ginv-virt-error
mips64el-img-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64el-img-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64el-img-linux  +FAIL: mips ginv-error
mips64el-img-linux  +FAIL: mips ginv-virt-error
mips64el-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64el-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64el-linux  +FAIL: mips ginv-error
mips64el-linux  +FAIL: mips ginv-virt-error
mips64el-mti-linux  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64el-mti-linux  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64el-mti-linux  +FAIL: mips ginv-error
mips64el-mti-linux  +FAIL: mips ginv-virt-error
mips64el-openbsd  +FAIL: MIPS Global INValidate instructions (mips32r6)
mips64el-openbsd  +FAIL: MIPS Global INValidate instructions (mips64r6)
mips64el-openbsd  +FAIL: MIPS Global INValidate instructions disassembly (mips32r6)
mips64el-openbsd  +FAIL: MIPS Global INValidate instructions disassembly (mips64r6)
mips64el-openbsd  +FAIL: mips ginv-error
mips64el-openbsd  +FAIL: mips ginv-virt-error

-- please address them.

> diff --git a/include/elf/mips.h b/include/elf/mips.h
> index a4bea43..d98b312 100644
> --- a/include/elf/mips.h
> +++ b/include/elf/mips.h
> @@ -1235,7 +1235,8 @@ extern void bfd_mips_elf_swap_abiflags_v0_out
>  #define AFL_ASE_XPA          0x00001000 /* XPA ASE.  */
>  #define AFL_ASE_DSPR3        0x00002000 /* DSP R3 ASE.  */
>  #define AFL_ASE_MIPS16E2     0x00004000 /* MIPS16e2 ASE.  */
> -#define AFL_ASE_MASK         0x00007fff /* All ASEs.  */
> +#define AFL_ASE_GINV         0x00020000 /* GINV ASE.  */
> +#define AFL_ASE_MASK         0x00027fff /* All ASEs.  */

 There is a gap in bit allocation here, why?

> diff --git a/include/opcode/mips.h b/include/opcode/mips.h
> index ceae9ec..c163846 100644
> --- a/include/opcode/mips.h
> +++ b/include/opcode/mips.h
> @@ -989,6 +989,9 @@ mips_opcode_32bit_p (const struct mips_opcode *mo)
>     "-A" symbolic offset (-262144 .. 262143) << 2 at bit 0
>     "-B" symbolic offset (-131072 .. 131071) << 3 at bit 0
>  
> +   GINV ASE usage:
> +   "+\" 2 bit Global TLB invalidate type at bit 8

 You need to update the list of extension character sequences below 
accordingly.

> @@ -1294,6 +1297,11 @@ static const unsigned int mips_isa_table[] = {
>  /* The Virtualization ASE has eXtended Physical Addressing (XPA)
>     instructions which are only valid when both ASEs are enabled.  */
>  #define ASE_XPA_VIRT		0x00020000
> +/* Global INValidate Extension. */
> +#define ASE_GINV		0x00800000
> +/* The Virtualization ASE has Global INValidate extension instructions
> +   which are only valid when both ASEs are enabled. */
> +#define ASE_GINV_VIRT		0x01000000

 Again there is a gap in bit allocation here, why?

> @@ -2308,6 +2316,9 @@ extern const int bfd_mips16_num_opcodes;
>     "+*" 5-bit register vector element index at bit 16
>     "+|" 8-bit mask at bit 16
>  
> +   GINV ASE usage:
> +   "+\" 2 bit Global TLB invalidate type at bit 8

 And likewise you need to update the list of extension character sequences 
below accordingly.

 As discussed off-list this submission has similar formatting issues as 
your CRC change, so please address them accordingly when reposting.

  Maciej


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]