[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] [PATCH 1/2] VMX: also use proper instruction mnemonic for VMREAD



On 16/09/2013 12:06, Jan Beulich wrote:
>      vmx_vmcs_enter(v);
>  
>      switch ( seg )
>      {
>      case x86_seg_cs:
> -        reg->sel   = __vmread(GUEST_CS_SELECTOR);
> -        reg->limit = __vmread(GUEST_CS_LIMIT);
> -        reg->base  = __vmread(GUEST_CS_BASE);
> -        attr       = __vmread(GUEST_CS_AR_BYTES);
> +        __vmread(GUEST_CS_SELECTOR, &sel);
> +        __vmread(GUEST_CS_LIMIT,    &limit);
> +        __vmread(GUEST_CS_BASE,     &reg->base);
> +        __vmread(GUEST_CS_AR_BYTES, &attr);
>          break;
>      case x86_seg_ds:
> -        reg->sel   = __vmread(GUEST_DS_SELECTOR);
> -        reg->limit = __vmread(GUEST_DS_LIMIT);
> -        reg->base  = __vmread(GUEST_DS_BASE);
> -        attr       = __vmread(GUEST_DS_AR_BYTES);
> +        __vmread(GUEST_DS_SELECTOR, &sel);
> +        __vmread(GUEST_DS_LIMIT,    &limit);
> +        __vmread(GUEST_DS_BASE,     &reg->base);
> +        __vmread(GUEST_DS_AR_BYTES, &attr);
>          break;
>      case x86_seg_es:
> -        reg->sel   = __vmread(GUEST_ES_SELECTOR);
> -        reg->limit = __vmread(GUEST_ES_LIMIT);
> -        reg->base  = __vmread(GUEST_ES_BASE);
> -        attr       = __vmread(GUEST_ES_AR_BYTES);
> +        __vmread(GUEST_ES_SELECTOR, &sel);
> +        __vmread(GUEST_ES_LIMIT,    &limit);
> +        __vmread(GUEST_ES_BASE,     &reg->base);
> +        __vmread(GUEST_ES_AR_BYTES, &attr);
>          break;
>      case x86_seg_fs:
> -        reg->sel   = __vmread(GUEST_FS_SELECTOR);
> -        reg->limit = __vmread(GUEST_FS_LIMIT);
> -        reg->base  = __vmread(GUEST_FS_BASE);
> -        attr       = __vmread(GUEST_FS_AR_BYTES);
> +        __vmread(GUEST_FS_SELECTOR, &sel);
> +        __vmread(GUEST_FS_LIMIT,    &limit);
> +        __vmread(GUEST_FS_BASE,     &reg->base);
> +        __vmread(GUEST_FS_AR_BYTES, &attr);
>          break;
>      case x86_seg_gs:
> -        reg->sel   = __vmread(GUEST_GS_SELECTOR);
> -        reg->limit = __vmread(GUEST_GS_LIMIT);
> -        reg->base  = __vmread(GUEST_GS_BASE);
> -        attr       = __vmread(GUEST_GS_AR_BYTES);
> +        __vmread(GUEST_GS_SELECTOR, &sel);
> +        __vmread(GUEST_GS_LIMIT,    &limit);
> +        __vmread(GUEST_GS_BASE,     &reg->base);
> +        __vmread(GUEST_GS_AR_BYTES, &attr);
>          break;
>      case x86_seg_ss:
> -        reg->sel   = __vmread(GUEST_SS_SELECTOR);
> -        reg->limit = __vmread(GUEST_SS_LIMIT);
> -        reg->base  = __vmread(GUEST_SS_BASE);
> -        attr       = __vmread(GUEST_SS_AR_BYTES);
> +        __vmread(GUEST_SS_SELECTOR, &sel);
> +        __vmread(GUEST_SS_LIMIT,    &limit);
> +        __vmread(GUEST_SS_BASE,     &reg->base);
> +        __vmread(GUEST_SS_AR_BYTES, &attr);
>          break;
>      case x86_seg_tr:
> -        reg->sel   = __vmread(GUEST_TR_SELECTOR);
> -        reg->limit = __vmread(GUEST_TR_LIMIT);
> -        reg->base  = __vmread(GUEST_TR_BASE);
> -        attr       = __vmread(GUEST_TR_AR_BYTES);
> +        __vmread(GUEST_TR_SELECTOR, &sel);
> +        __vmread(GUEST_TR_LIMIT,    &limit);
> +        __vmread(GUEST_TR_BASE,     &reg->base);
> +        __vmread(GUEST_TR_AR_BYTES, &attr);
>          break;
>      case x86_seg_gdtr:
> -        reg->limit = __vmread(GUEST_GDTR_LIMIT);
> -        reg->base  = __vmread(GUEST_GDTR_BASE);
> +        __vmread(GUEST_GDTR_LIMIT, &limit);
> +        __vmread(GUEST_GDTR_BASE,  &reg->base);
>          break;
>      case x86_seg_idtr:
> -        reg->limit = __vmread(GUEST_IDTR_LIMIT);
> -        reg->base  = __vmread(GUEST_IDTR_BASE);
> +        __vmread(GUEST_IDTR_LIMIT, &limit);
> +        __vmread(GUEST_IDTR_BASE,  &reg->base);
>          break;
>      case x86_seg_ldtr:
> -        reg->sel   = __vmread(GUEST_LDTR_SELECTOR);
> -        reg->limit = __vmread(GUEST_LDTR_LIMIT);
> -        reg->base  = __vmread(GUEST_LDTR_BASE);
> -        attr       = __vmread(GUEST_LDTR_AR_BYTES);
> +        __vmread(GUEST_LDTR_SELECTOR, &sel);
> +        __vmread(GUEST_LDTR_LIMIT,    &limit);
> +        __vmread(GUEST_LDTR_BASE,     &reg->base);
> +        __vmread(GUEST_LDTR_AR_BYTES, &attr);
>          break;
>      default:
>          BUG();
> +        return;

This return is dead code.

Otherwise,

Reviewed-by: Andrew Cooper <andrew.cooper3@xxxxxxxxxx>


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.