KVM: x86 emulator: add ad_mask static inline
authorHarvey Harrison <harvey.harrison@gmail.com>
Mon, 18 Feb 2008 19:12:48 +0000 (11:12 -0800)
committerAvi Kivity <avi@qumranet.com>
Sun, 27 Apr 2008 08:53:22 +0000 (11:53 +0300)
Replaces open-coded mask calculation in macros.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: Avi Kivity <avi@qumranet.com>
arch/x86/kvm/x86_emulate.c

index 22900f7..f6f6544 100644 (file)
@@ -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)                                                   \