@@ -597,11 +597,11 @@ static void vie_calc_bytereg(struct instr_emul_vie *vie,
597
597
}
598
598
}
599
599
600
- static int vie_read_bytereg (struct vcpu * vcpu , struct instr_emul_vie * vie ,
601
- uint8_t * rval )
600
+ static uint8_t vie_read_bytereg (struct vcpu * vcpu , struct instr_emul_vie * vie )
602
601
{
602
+ int lhbr ;
603
603
uint64_t val ;
604
- int error = 0 , lhbr ;
604
+ uint8_t reg_val ;
605
605
enum cpu_reg_name reg ;
606
606
607
607
vie_calc_bytereg (vie , & reg , & lhbr );
@@ -612,37 +612,36 @@ static int vie_read_bytereg(struct vcpu *vcpu, struct instr_emul_vie *vie,
612
612
* base register right by 8 bits (%ah = %rax >> 8).
613
613
*/
614
614
if (lhbr != 0 ) {
615
- * rval = (uint8_t )(val >> 8 );
615
+ reg_val = (uint8_t )(val >> 8 );
616
616
} else {
617
- * rval = (uint8_t )val ;
617
+ reg_val = (uint8_t )val ;
618
618
}
619
- return error ;
619
+
620
+ return reg_val ;
620
621
}
621
622
622
- static int vie_write_bytereg (struct vcpu * vcpu , struct instr_emul_vie * vie ,
623
+ static void vie_write_bytereg (struct vcpu * vcpu , struct instr_emul_vie * vie ,
623
624
uint8_t byte )
624
625
{
625
626
uint64_t origval , val , mask ;
626
- int error = 0 , lhbr ;
627
627
enum cpu_reg_name reg ;
628
+ int lhbr ;
628
629
629
630
vie_calc_bytereg (vie , & reg , & lhbr );
630
631
origval = vm_get_register (vcpu , reg );
631
- if (error == 0 ) {
632
- val = byte ;
633
- mask = 0xffU ;
634
- if (lhbr != 0 ) {
635
- /*
636
- * Shift left by 8 to store 'byte' in a legacy high
637
- * byte register.
638
- */
639
- val <<= 8 ;
640
- mask <<= 8 ;
641
- }
642
- val |= origval & ~mask ;
643
- vm_set_register (vcpu , reg , val );
632
+
633
+ val = byte ;
634
+ mask = 0xffU ;
635
+ if (lhbr != 0 ) {
636
+ /*
637
+ * Shift left by 8 to store 'byte' in a legacy high
638
+ * byte register.
639
+ */
640
+ val <<= 8 ;
641
+ mask <<= 8 ;
644
642
}
645
- return error ;
643
+ val |= origval & ~mask ;
644
+ vm_set_register (vcpu , reg , val );
646
645
}
647
646
648
647
static int vie_update_register (struct vcpu * vcpu , enum cpu_reg_name reg ,
@@ -744,10 +743,8 @@ static int emulate_mov(struct vcpu *vcpu, struct instr_emul_vie *vie)
744
743
* REX + 88/r: mov r/m8, r8 (%ah, %ch, %dh, %bh not available)
745
744
*/
746
745
size = 1U ; /* override for byte operation */
747
- error = vie_read_bytereg (vcpu , vie , & byte );
748
- if (error == 0 ) {
749
- error = mmio_write (vcpu , byte );
750
- }
746
+ byte = vie_read_bytereg (vcpu , vie );
747
+ error = mmio_write (vcpu , byte );
751
748
break ;
752
749
case 0x89U :
753
750
/*
@@ -771,7 +768,7 @@ static int emulate_mov(struct vcpu *vcpu, struct instr_emul_vie *vie)
771
768
size = 1U ; /* override for byte operation */
772
769
error = mmio_read (vcpu , & val );
773
770
if (error == 0 ) {
774
- error = vie_write_bytereg (vcpu , vie , (uint8_t )val );
771
+ vie_write_bytereg (vcpu , vie , (uint8_t )val );
775
772
}
776
773
break ;
777
774
case 0x8BU :
0 commit comments