|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 3/3] x86/emul: Improvements to internal users of decode_register()
>>> On 26.01.18 at 14:16, <andrew.cooper3@xxxxxxxxxx> wrote:
> --- a/xen/arch/x86/x86_emulate/x86_emulate.c
> +++ b/xen/arch/x86/x86_emulate/x86_emulate.c
> @@ -1980,9 +1980,8 @@ load_seg(
> return rc;
> }
>
> -void *
> -decode_register(
> - uint8_t modrm_reg, struct cpu_user_regs *regs, int highbyte_regs)
> +static unsigned long *decode_high_gpr(
> + struct cpu_user_regs *regs, unsigned int modrm_reg, bool highbyte_regs)
Same remark as made earlier for the array, here regarding the
function name: You're decoding legacy byte registers, not high
byte ones. As to the return type - wasn't it you who objected
to "unsigned long *" when the pointer really just points at a
byte (which I've already reflected in my v4 of the patch which
I assume triggered your attempt to do things differently)? I.e.
either void * or uint8_t *, please.
> @@ -3066,8 +3063,7 @@ x86_emulate(
> generate_exception_if(state->not_64bit && mode_64bit(), EXC_UD);
>
> if ( ea.type == OP_REG )
> - ea.reg = decode_register(modrm_rm, &_regs,
> - (d & ByteOp) && !rex_prefix);
> + ea.reg = decode_high_gpr(&_regs, modrm_rm, (d & ByteOp) &&
> !rex_prefix);
>
> memset(mmvalp, 0xaa /* arbitrary */, sizeof(*mmvalp));
>
> @@ -3081,13 +3077,13 @@ x86_emulate(
> src.type = OP_REG;
> if ( d & ByteOp )
> {
> - src.reg = decode_register(modrm_reg, &_regs, (rex_prefix == 0));
> + src.reg = decode_high_gpr(&_regs, modrm_reg, (rex_prefix == 0));
Along the lines of the earlier hunk "!rex_prefix"? Same in I think two
more cases further down.
Jan
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |