class LdStOp(X86Microop):
def __init__(self, data, segment, addr, disp,
dataSize, addressSize, baseFlags, atCPL0, prefetch, nonSpec,
- implicitStack):
+ implicitStack, uncacheable):
self.data = data
[self.scale, self.index, self.base] = addr
self.disp = disp
self.instFlags += " | (1ULL << StaticInst::IsDataPrefetch)"
if nonSpec:
self.instFlags += " | (1ULL << StaticInst::IsNonSpeculative)"
+ if uncacheable:
+ self.instFlags += " | (Request::UNCACHEABLE)"
# For implicit stack operations, we should use *not* use the
# alternative addressing mode for loads/stores if the prefix is set
if not implicitStack:
class BigLdStOp(X86Microop):
def __init__(self, data, segment, addr, disp,
dataSize, addressSize, baseFlags, atCPL0, prefetch, nonSpec,
- implicitStack):
+ implicitStack, uncacheable):
self.data = data
[self.scale, self.index, self.base] = addr
self.disp = disp
self.instFlags += " | (1ULL << StaticInst::IsDataPrefetch)"
if nonSpec:
self.instFlags += " | (1ULL << StaticInst::IsNonSpeculative)"
+ if uncacheable:
+ self.instFlags += " | (Request::UNCACHEABLE)"
# For implicit stack operations, we should use *not* use the
# alternative addressing mode for loads/stores if the prefix is set
if not implicitStack:
class LdStSplitOp(LdStOp):
def __init__(self, data, segment, addr, disp,
dataSize, addressSize, baseFlags, atCPL0, prefetch, nonSpec,
- implicitStack):
+ implicitStack, uncacheable):
super(LdStSplitOp, self).__init__(0, segment, addr, disp,
dataSize, addressSize, baseFlags, atCPL0, prefetch, nonSpec,
- implicitStack)
+ implicitStack, uncacheable)
(self.dataLow, self.dataHi) = data
def getAllocator(self, microFlags):
dataSize="env.dataSize",
addressSize=addressSize,
atCPL0=False, prefetch=False, nonSpec=nonSpec,
- implicitStack=implicitStack):
+ implicitStack=implicitStack, uncacheable=False):
super(LoadOp, self).__init__(data, segment, addr,
disp, dataSize, addressSize, mem_flags,
- atCPL0, prefetch, nonSpec, implicitStack)
+ atCPL0, prefetch, nonSpec, implicitStack, uncacheable)
self.className = Name
self.mnemonic = name
dataSize="env.dataSize",
addressSize="env.addressSize",
atCPL0=False, prefetch=False, nonSpec=nonSpec,
- implicitStack=False):
+ implicitStack=False, uncacheable=False):
super(LoadOp, self).__init__(data, segment, addr,
disp, dataSize, addressSize, mem_flags,
- atCPL0, prefetch, nonSpec, implicitStack)
+ atCPL0, prefetch, nonSpec, implicitStack, uncacheable)
self.className = Name
self.mnemonic = name
def __init__(self, data, segment, addr, disp = 0,
dataSize="env.dataSize",
addressSize=addressSize,
- atCPL0=False, nonSpec=False, implicitStack=implicitStack):
+ atCPL0=False, nonSpec=False, implicitStack=implicitStack,
+ uncacheable=False):
super(StoreOp, self).__init__(data, segment, addr, disp,
dataSize, addressSize, mem_flags, atCPL0, False,
- nonSpec, implicitStack)
+ nonSpec, implicitStack, uncacheable)
self.className = Name
self.mnemonic = name
def __init__(self, data, segment, addr, disp = 0,
dataSize="env.dataSize",
addressSize="env.addressSize",
- atCPL0=False, nonSpec=False, implicitStack=False):
+ atCPL0=False, nonSpec=False, implicitStack=False,
+ uncacheable=False):
super(StoreOp, self).__init__(data, segment, addr, disp,
dataSize, addressSize, mem_flags, atCPL0, False,
- nonSpec, implicitStack)
+ nonSpec, implicitStack, uncacheable)
self.className = Name
self.mnemonic = name
def __init__(self, data, segment, addr, disp = 0,
dataSize="env.dataSize", addressSize="env.addressSize"):
super(LeaOp, self).__init__(data, segment, addr, disp,
- dataSize, addressSize, "0", False, False, False, False)
+ dataSize, addressSize, "0",
+ False, False, False, False, False)
self.className = "Lea"
self.mnemonic = "lea"
addressSize="env.addressSize"):
super(TiaOp, self).__init__("InstRegIndex(NUM_INTREGS)", segment,
addr, disp, dataSize, addressSize, "0", False, False,
- False, False)
+ False, False, False)
self.className = "Tia"
self.mnemonic = "tia"
addressSize="env.addressSize", atCPL0=False):
super(CdaOp, self).__init__("InstRegIndex(NUM_INTREGS)", segment,
addr, disp, dataSize, addressSize, "Request::NO_ACCESS",
- atCPL0, False, False, False)
+ atCPL0, False, False, False, False)
self.className = "Cda"
self.mnemonic = "cda"