From db756ec4a5ab15f9b6e038b1c7fdd748a54c763d Mon Sep 17 00:00:00 2001 From: Harvey Harrison Date: Mon, 18 Feb 2008 11:12:48 -0800 Subject: [PATCH] --- yaml --- r: 93799 b: refs/heads/master c: ddcb2885e2902ebfc422eccd763b02c5ee22d68b h: refs/heads/master i: 93797: 67bb10203f22eb40f2ebeaeda20a526d0e894480 93795: 76d23e577266c9882b3c09ccd370ee033508957a 93791: 833ce460a4173b8105ea4d8f68271659ff117515 v: v3 --- [refs] | 2 +- trunk/arch/x86/kvm/x86_emulate.c | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 5bd3e2c47dd9..1e96d495654d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 790c73f6289a204f858ffdcbe4a2b38e91657ec6 +refs/heads/master: ddcb2885e2902ebfc422eccd763b02c5ee22d68b diff --git a/trunk/arch/x86/kvm/x86_emulate.c b/trunk/arch/x86/kvm/x86_emulate.c index 22900f70172b..f6f6544cf747 100644 --- a/trunk/arch/x86/kvm/x86_emulate.c +++ b/trunk/arch/x86/kvm/x86_emulate.c @@ -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) \