diff options
| author | Aurelien Jarno | 2013-11-06 18:32:23 +0100 |
|---|---|---|
| committer | Richard Henderson | 2014-01-25 23:12:38 +0100 |
| commit | c9d78213b8bf6e0da9ff30b53c33e93fb0373249 (patch) | |
| tree | 24631c5515f1a502465bc88b79d0c114e0295aee /tcg/i386 | |
| parent | disas/i386.c: disassemble movbe instruction (diff) | |
| download | qemu-c9d78213b8bf6e0da9ff30b53c33e93fb0373249.tar.gz qemu-c9d78213b8bf6e0da9ff30b53c33e93fb0373249.tar.xz qemu-c9d78213b8bf6e0da9ff30b53c33e93fb0373249.zip | |
tcg/i386: remove hardcoded P_REXW value
P_REXW is defined has a constant at the beginning of i386/tcg-target.c,
but the corresponding bit is later used in a harcoded way, which defeat
the purpose of a constant.
Fix that by using a conditional expression operator instead of a shift.
On x86 this actually makes the code slightly smaller as GCC does in
practice (opc >> 8) & 8 instead of (opc & 0x800) >> 8 so the constants
are smaller to load.
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
Signed-off-by: Richard Henderson <rth@twiddle.net>
Diffstat (limited to 'tcg/i386')
| -rw-r--r-- | tcg/i386/tcg-target.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tcg/i386/tcg-target.c b/tcg/i386/tcg-target.c index 495b901080..753b3a1c64 100644 --- a/tcg/i386/tcg-target.c +++ b/tcg/i386/tcg-target.c @@ -381,7 +381,7 @@ static void tcg_out_opc(TCGContext *s, int opc, int r, int rm, int x) } rex = 0; - rex |= (opc & P_REXW) >> 8; /* REX.W */ + rex |= (opc & P_REXW) ? 0x8 : 0x0; /* REX.W */ rex |= (r & 8) >> 1; /* REX.R */ rex |= (x & 8) >> 2; /* REX.X */ rex |= (rm & 8) >> 3; /* REX.B */ |
