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>
# 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
env.dataSize = 4;
'''
+ assembler.symbols["clampOsz"] = '''
+ if (env.dataSize == 2)
+ env.dataSize = 4;
+ '''
+
def trimImm(width):
return "adjustedImm = adjustedImm & mask(%s);" % width