Age | Commit message (Collapse) | Author |
|
Even though this shouldn't ever be used, it might get called speculatively and
shouldn't panic.
|
|
|
|
|
|
|
|
These flags were being used to identify what alignment a request needed, but
the same information is available using the request size. This change also
eliminates the isMisaligned function. If more complicated alignment checks are
needed, they can be signaled using the ASI_BITS space in the flags vector like
is currently done with ARM.
|
|
When no size is specified for an argument, push the decision about what size
to use into the ISA by passing a size of -1.
|
|
|
|
CLREX is the name of an ARM instruction, not a name for this generic flag.
|
|
|
|
Also make it not set some pointers to NULL potentially introducing a memory
leak. That should be done in the constructor.
|
|
|
|
|
|
Also add asserts in O3's Scoreboard class to catch bad indexes.
|
|
|
|
front of list
|
|
for debugging and program introspection.
|
|
In the process make add skipFuction() to handle isa specific function skipping
instead of ifdefs and other ugliness. For almost all ABIs, 64 bit arguments can
only start in even registers. Size is now passed to getArgument() so that 32
bit systems can make decisions about register selection for 64 bit arguments.
The number argument is now passed by reference because getArgument() will need
to change it based on the size of the argument and the current argument number.
For ARM, if the argument number is odd and a 64-bit register is requested the
number must first be incremented to because all 64 bit arguments are passed
in an even argument register. Then the number will be incremented again to
access both halves of the argument.
|
|
Rather tha constantly using ULL(1) << PcXBitShift define those directly.
Additionally, add some helper functions to further clean up the code.
|
|
|
|
Executing this microop makes the CPU halt even if it was misspeculated.
|
|
|
|
This reduces the scope of those includes and makes it less likely for there to
be a dependency loop. This also moves the hashing functions associated with
ExtMachInst objects to be with the ExtMachInst definitions and out of
utility.hh.
|
|
Also move the "Fault" reference counted pointer type into a separate file,
sim/fault.hh. It would be better to name this less similarly to sim/faults.hh
to reduce confusion, but fault.hh matches the name of the type. We could change
Fault to FaultPtr to match other pointer types, and then changing the name of
the file would make more sense.
|
|
|
|
|
|
|
|
I accidentally left myself as a placeholder copyright holder on this file when
I checked it in. Copyright should be assigned to AMD.
|
|
Without this flag set, page-crossing requests were not split into two mem
request.
Depending on the alignment bit in the SCTLR, misaligned access could
raise a fault. However it seems unnecessary to implement that.
|
|
|
|
This fault can used to flush the pipe, not including the faulting instruction.
The particular case I needed this was for a self-modifying code. It needed to
drain the store queue and force the following instruction to refetch from
icache. DCCMVAC cp15 mcr instruction is modified to raise this fault.
|
|
These were erronously copied years ago into the ARM directory.
|
|
Does not work with vfp arguments or arguments passed on the stack.
|
|
When decoding a srs instruction, invalid mode encoding returns invalid instruction.
This can happen when garbage instructions are fetched from mispredicted path
|
|
|
|
Allow some loads that update the base register to use just two micro-ops. three
micro-ops are only used if the destination register matches the offset register
or the PC is the destination regsiter. If the PC is updated it needs to be
the last micro-op otherwise O3 will mispredict.
|
|
|
|
|
|
|
|
|
|
|
|
access is disabled.
|
|
|
|
inUserMode now can take either a threadcontext or a CPSR value directly. If
given a thread context it just extracts the CPSR and calls the other version.
An inPrivelegedMode function was also implemented which just returns the
opposite of inUserMode.
|
|
This is to help tidy up arch/x86. These files should not be used external to
the ISA.
--HG--
rename : src/arch/x86/apicregs.hh => src/arch/x86/regs/apic.hh
rename : src/arch/x86/floatregs.hh => src/arch/x86/regs/float.hh
rename : src/arch/x86/intregs.hh => src/arch/x86/regs/int.hh
rename : src/arch/x86/miscregs.hh => src/arch/x86/regs/misc.hh
rename : src/arch/x86/segmentregs.hh => src/arch/x86/regs/segment.hh
|
|
This function was brought in from another ISA and doesn't actually do anything
or get used.
|
|
|
|
This will reduce clutter in the source and hopefully speed up compilation.
|
|
The fault object, if invoked, would then panic. This is a bit less direct, but
it means speculative execution won't panic the simulator.
|
|
--HG--
rename : src/arch/x86/types.hh => src/arch/x86/types.cc
|
|
|