1// Copyright (c) 2008 The Regents of The University of Michigan 2// All rights reserved. 3// 4// Redistribution and use in source and binary forms, with or without 5// modification, are permitted provided that the following conditions are 6// met: redistributions of source code must retain the above copyright 7// notice, this list of conditions and the following disclaimer; 8// redistributions in binary form must reproduce the above copyright --- 361 unchanged lines hidden (view full) --- 370 self.segment = segment 371 self.dataSize = dataSize 372 self.addressSize = addressSize 373 self.memFlags = baseFlags 374 if atCPL0: 375 self.memFlags += " | (CPL0FlagBit << FlagShift)" 376 if prefetch: 377 self.memFlags += " | Request::PF_EXCLUSIVE" |
378 self.memFlags += " | (machInst.legacy.addr ? " + \ 379 "(AddrSizeFlagBit << FlagShift) : 0)" |
380 381 def getAllocator(self, *microFlags): 382 allocator = '''new %(class_name)s(machInst, macrocodeBlock 383 %(flags)s, %(scale)s, %(index)s, %(base)s, 384 %(disp)s, %(segment)s, %(data)s, 385 %(dataSize)s, %(addressSize)s, %(memFlags)s)''' % { 386 "class_name" : self.className, 387 "flags" : self.microFlagsText(microFlags), --- 48 unchanged lines hidden (view full) --- 436 microopClasses[name] = LoadOp 437 438 defineMicroLoadOp('Ld', 'Data = merge(Data, Mem, dataSize);') 439 defineMicroLoadOp('Ldst', 'Data = merge(Data, Mem, dataSize);', 440 'X86ISA::StoreCheck') 441 defineMicroLoadOp('Ldfp', 'FpData.uqw = Mem;') 442 443 def defineMicroStoreOp(mnemonic, code, \ |
444 postCode="", completeCode="", mem_flags="0"): |
445 global header_output 446 global decoder_output 447 global exec_output 448 global microopClasses 449 Name = mnemonic 450 name = mnemonic.lower() 451 452 # Build up the all register version of this micro op --- 78 unchanged lines hidden --- |