Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ddcb2885 authored by Harvey Harrison's avatar Harvey Harrison Committed by Avi Kivity
Browse files

KVM: x86 emulator: add ad_mask static inline



Replaces open-coded mask calculation in macros.

Signed-off-by: default avatarHarvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
parent 790c73f6
Loading
Loading
Loading
Loading
+8 −3
Original line number Diff line number Diff line
@@ -480,10 +480,15 @@ static u16 group2_table[] = {
	(_type)_x;							\
})

static inline unsigned long ad_mask(struct decode_cache *c)
{
	return (1UL << (c->ad_bytes << 3)) - 1;
}

/* Access/update address held in a register, based on addressing mode. */
#define address_mask(reg)						\
	((c->ad_bytes == sizeof(unsigned long)) ? 			\
		(reg) :	((reg) & ((1UL << (c->ad_bytes << 3)) - 1)))
		(reg) :	((reg) & ad_mask(c)))
#define register_address(base, reg)                                     \
	((base) + address_mask(reg))
#define register_address_increment(reg, inc)                            \
@@ -494,9 +499,9 @@ static u16 group2_table[] = {
			(reg) += _inc;					\
		else							\
			(reg) = ((reg) & 				\
				 ~((1UL << (c->ad_bytes << 3)) - 1)) |	\
				 ~ad_mask(c)) |	\
				(((reg) + _inc) &			\
				 ((1UL << (c->ad_bytes << 3)) - 1));	\
				 ad_mask(c));	\
	} while (0)

#define JMP_REL(rel) 							\