PowerPC POWER10 updates to dcbf, sync and wait instructions
Alan Modra
amodra@gmail.com
Mon May 18 02:36:01 GMT 2020
On Sat, May 16, 2020 at 05:53:20PM -0500, Peter Bergner wrote:
> -/* The 2-bit L field in a SYNC or WC field in a WAIT instruction.
> +/* The 2-bit/3-bit L or 2-bit WC field in a SYNC, DCBF or WAIT instruction.
> For SYNC, some L values are reserved:
> - * Value 3 is reserved on newer server cpus.
> - * Values 2 and 3 are reserved on all other cpus. */
> + * Values 3, 6 and 7 are reserved on all cpus.
> + * Value 2 is reserved on all other cpus.
The above needs fixing.
> + /* For SYNC, some L values are illegal. */
> + mask = (dialect & PPC_OPCODE_POWER10) ? 0x7 : 0x3;
> +
> + /* If the value is within range, check for other illegal values. */
> + if ((value & mask) == value)
> + switch (value)
> + {
> + case 2:
> + if (dialect & PPC_OPCODE_POWER4)
> + break;
> + /* Fall through. */
> + case 3:
> + case 6:
> + case 7:
> + *errmsg = _("illegal L operand value");
> + break;
> + default:
> + break;
> + }
So if "(value & mask) != value" then no checks are done? That doesn't
seem correct. The same problem occurs later too.
--
Alan Modra
Australia Development Lab, IBM
More information about the Binutils
mailing list