x86: Use operand size 4 when it would be 2 for cmpxchg8b.
This means the instruction is treated as cmpxchg8b when the effective operand size is 16 bits. Change-Id: I4d9bb295f96097e1746a9bbccb2c579d14738fab Reviewed-on: https://gem5-review.googlesource.com/6603 Reviewed-by: Jason Lowe-Power <jason@lowepower.com> Maintainer: Gabe Black <gabeblack@google.com>
This commit is contained in:
@@ -132,6 +132,7 @@ def macroop XADD_R_R {
|
||||
# of dataSize.
|
||||
cmpxchg8bCode = '''
|
||||
def macroop CMPXCHG8B_%(suffix)s {
|
||||
.adjust_env clampOsz
|
||||
%(rdip)s
|
||||
lea t1, seg, %(sib)s, disp, dataSize=asz
|
||||
ldsplit%(l)s (t2, t3), seg, [1, t0, t1], disp=0
|
||||
|
||||
@@ -180,6 +180,11 @@ let {{
|
||||
env.dataSize = 4;
|
||||
'''
|
||||
|
||||
assembler.symbols["clampOsz"] = '''
|
||||
if (env.dataSize == 2)
|
||||
env.dataSize = 4;
|
||||
'''
|
||||
|
||||
def trimImm(width):
|
||||
return "adjustedImm = adjustedImm & mask(%s);" % width
|
||||
|
||||
|
||||
Reference in New Issue
Block a user