History log of /gem5/src/arch/x86/isa/
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
14289:49005710b522 26-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: ignore non-temporal hint for movntps/movntpd SSE insts

Making the implementation of movntps/movntpd consistent with other
non-temporal instructions. We are ignoring the hint here, and
implementing those instructions as cacheable instructions.

This change adds a warning to let user know about this workaround.
Also, this change add the address check for second part of move.

Change-Id: I811652b24cf39ca2f5c5d4c9e9e417f69190b55c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20408
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14287:1c9774d969ac 18-Sep-2019 Hoa Nguyen <hoanguyen@ucdavis.edu>

arch-x86: Change warn to warn_once for NT instructions

Change-Id: I50353716f2a913b9b106b140644d95991879f662
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/21039
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14277:73d5e60b3a7c 06-Sep-2019 Gabe Black <gabeblack@google.com>

arch, x86: Rework the debug faults and microops.

This makes the non-fatal microops advance the PC, and adds missing
functions. The *_once Faults now also can be run once per *something*.
They would previously be run once per Fault invoke function which is
common to all M5WarnOnceFaults. The warn_once microop will now warn
once per message.

Change-Id: I05974b93f3b2700077a411b243679c2ff0e8c2cb
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20739
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14224:2edf6ec03c9d 26-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: Adding warning for movnti

We are ignoring the non-temporal hint here, and implementing this
instruction as a cacheable instruction.

This change adds a warning to let user know about this workaround.

Change-Id: I2e40437a44282fe9cf7772a25a8870bd8729a6ed
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20428
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14220:d8f83e601091 20-Aug-2019 Pouya Fotouhi <Pouya.Fotouhi@amd.com>

arch-x86: implement movntq/movntdq instructions

Non-temporal quadword/double-quadword move instructions.
This change ignores the non-temporal hint and instructions are
implemented to send cacheable request to memory.
This would have some "performance" impact (i.e. having some cache
pollution) to get better "correctness" in behavior.

Change-Id: I2052ac0970f61a54bafb7332762debcb7103202d
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20288
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

14164:9683bde0d48a 14-Aug-2019 Gabe Black <gabeblack@google.com>

x86: Make unsuccessful CPUID instructions zero the result.

The previous implementation left the registers unmodified which is
technically correct since there is no defined behavior in that case or
a fault to raise. That would make what happened when the following code
consumed the result unpredictable because it would depend on what junk
values were left in the registers. This was originally not a problem
since the space of supported functions were tightly packed, but someone
added a new function with a gap without adjusting this behavior.

This change makes CPUID zero out RAX, RBX, RCX, and RDX when it fails.
That should be more predictable and cause less flakey failures.

Change-Id: If6ffb17c2969d34aff1600c0ffc32333d0b9be44
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20168
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Pouya Fotouhi <pfotouhi@ucdavis.edu>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

14087:ca8b1211541c 12-Jul-2019 Hoa Nguyen <hoanguyen@ucdavis.edu>

arch-x86: add unconditional tag to calls/returns

The branch predictor checks whether an instruction is unconditional
branch before adding it or checking the RAS. With this change, the
RAS is significantly more effective for short running x86 workloads.

Change-Id: I60af5f2f583b898ad77f79f4b0478d6cda88fc21
Signed-off-by: Hoa Nguyen <hoanguyen@ucdavis.edu>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19448
Maintainer: Jason Lowe-Power <jason@lowepower.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Gabe Black <gabeblack@google.com>

14033:a1cb162f68d9 31-May-2019 Brandon Potter <brandon.potter@amd.com>

x86: fix movsd bug on %xmm register

The movsd instruction should zero out half the register, but
does not do it. This changeset adds the necessary microop to
the instruction to cause correct behavior.

Change-Id: I5278da3634c78a97ed0586f687a36c6dc5a34c60
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/19068
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>
Tested-by: kokoro <noreply+kokoro@google.com>

13675:afeab32b3655 24-Jan-2019 Andreas Sandberg <andreas.sandberg@arm.com>

python: Replace dict.has_key with 'key in dict'

Python 3 has removed dict.has_key in favour of 'key in dict'.

Change-Id: I9852a5f57d672bea815308eb647a0ce45624fad5
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/15987
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>

13613:a19963be12ca 20-Nov-2018 Gabe Black <gabeblack@google.com>

x86: Stop using/defining some ISA specific register types.

These have been replaced with the generic RegVal type.

Change-Id: I75c1134212067dea43aa0903d813633e06f3d6c6
Reviewed-on: https://gem5-review.googlesource.com/c/14476
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

13611:c8b7847b4171 19-Nov-2018 Gabe Black <gabeblack@google.com>

arch: cpu: Rename *FloatRegBits* to *FloatReg*.

Now that there's no plain FloatReg, there's no reason to distinguish
FloatRegBits with a special suffix since it's the only way to read or
write FP registers.

Change-Id: I3a60168c1d4302aed55223ea8e37b421f21efded
Reviewed-on: https://gem5-review.googlesource.com/c/14460
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Reviewed-by: Giacomo Travaglini <giacomo.travaglini@arm.com>
Maintainer: Gabe Black <gabeblack@google.com>

13441:d70ffc3dabf0 20-Nov-2018 Gabe Black <gabeblack@google.com>

x86: Get rid of a problematic DPRINTF in PremFp.

This DPRINTF shouldn't be necessary since it shows the operands and
results of the instruction which the trace should already make
available. Also by passing the destination register to DPRINTF, the ISA
parser will assume that it's also a source when tracking dependencies.

Change-Id: I820387c82578bdbb8d2e3d91652a6c0185077f54
Reviewed-on: https://gem5-review.googlesource.com/c/14475
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12707:7819f067a128 23-May-2018 Gabe Black <gabeblack@google.com>

x86: Add op classes to the MediaOps.

The ISA parser had been assuming these microops were all FloatAddOp
which is usually not correct.

Change-Id: Ic54881d16f16b50c3d6a8c74b94bff9ae3b1f43e
Reviewed-on: https://gem5-review.googlesource.com/10541
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Tariq Azmy <tariqslayer01@gmail.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12683:6e14a1dd346d 20-Apr-2017 Steve Reinhardt <steve.reinhardt@amd.com>

arch-x86: implement movntps/movntpd SSE insts

These are non-temporal packed SSE stores.

Change-Id: I526cd6551b38d6d35010bc6173f23d017106b466
Reviewed-on: https://gem5-review.googlesource.com/9861
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12682:dfc3bb0db088 13-Apr-2018 Gabe Black <gabeblack@google.com>

x86: Add a ld/st microop flag for marking an access uncacheable.

This percolates down to the memory request object which will have its
"UNCACHEABLE" flag set.

Change-Id: Ie73f4249bfcd57f45a473f220d0988856715a9ce
Reviewed-on: https://gem5-review.googlesource.com/9881
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12588:c007da6c777a 29-Jan-2018 Gabe Black <gabeblack@google.com>

x86: Add bitfields which can gather/scatter bases and limits.

Add bitfields which can gather/scatter base and limit fields within
"normal" segment descriptors, and in TSS descriptors which have the
same bitfields in the same positions for those two values.

This centralizes the code which manages those bitfields and makes it
less likely that a local implementation will be buggy.

Change-Id: I9809aa626fc31388595c3d3b225c25a0ec6a1275
Reviewed-on: https://gem5-review.googlesource.com/7661
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12587:e7ce22ce119f 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Simplify the implementations of RDTSC and RDTSCP slightly.

These instructions originally read the TSC into t1 and then unpacked it
into eax and edx using a move, a right shift, and then another move.
We can combine the second shift and move. The shift will move the
upper 32 bits into the lower 32 bits, and clear the upper 32 bits to
zero. This has the same effect as moving the lower 32 bits post-shift
into another register, since the upper 32 bits will be cleared to zero
based on x86 partial register access semantics.

Change-Id: Iba85e501c7e84147ad0047f5c555e61bdf8f032b
Reviewed-on: https://gem5-review.googlesource.com/9044
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12586:ab24f7edc1e3 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Implement the RDTSCP instruction.

This is very similar to RDTSC, except that it requires all younger
instructions to retire before it completes, and it writes the TSC_AUX
MSR into ECX. I've added an mfence as an iniitial microop to ensure
that memory accesses complete before RDTSCP runs, and added an rdval
microop at the end to read the TSC_AUX value into ECX.

Change-Id: I9766af562b7fd0c22e331b56e06e8818a9e268c9
Reviewed-on: https://gem5-review.googlesource.com/9043
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12585:d8dc3be32b91 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Mark the RDTSC instruction as .serialize_before.

Change-Id: I20bf6a57ea4354aac9267845bb37b70b83d6fcde
Reviewed-on: https://gem5-review.googlesource.com/9042
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12584:2af98e1fb894 12-Mar-2018 Gabe Black <gabeblack@google.com>

x86: Replace the .serializing directive with .serialize_(before|after).

This makes it explicit which type of serialization you want, and also
makes it possible to make a macroop serialize before. The old
serializing directive was renamed .serialize_after in the microcode
assembler, and throughout the microcode implementation, and its
behavior is unchanged. More specifically, it still marks the last
microop within the macroop as IsSerializing and IsSerializeAfter.

The new .serialize_before directive does something similar and marks
the first microop as IsSerializing and IsSerializeBefore.

Change-Id: Ia53466c734c651c65400809de7ef903c4a6c3e7e
Reviewed-on: https://gem5-review.googlesource.com/9041
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12463:84f365522633 15-Jan-2018 Swapnil Haria <swapnilster@gmail.com>

arch-x86: Adding clflush, clflushopt, clwb instructions

This patch adds support for cache flushing instructions in x86.
It piggybacks on support for similar instructions in arm ISA
added by Nikos Nikoleris. I have tested each instruction using
microbenchmarks.

Change-Id: I72b6b8dc30c236a21eff7958fa231f0663532d7d
Reviewed-on: https://gem5-review.googlesource.com/7401
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12407:c24d0c2d816d 20-Dec-2017 Gabe Black <gabeblack@google.com>

riscv,x86: Stop using the arch Nop machine instruction unnecessarily.

That particular ExtMachInst is a convenient placeholder, but a value
of 0 in RISCV or a static uninitialized ExtMachInst (which will
therefore be all zeroes) on x86 works just as well, and removes the
need for an ISA specific constant.

Also, the idea of a universal Nop doesn't always make sense since it
could be that what, exactly, doesn't do anything depends on context
which would be lost on a constant value of an ExtMachInst. For
instance, the value of an ExtMachInst that makes sense might depend on
what mode the CPU was in, etc.

Change-Id: I1f1a43a5c607a667e11b79bcf6e059e4f7141b3f
Reviewed-on: https://gem5-review.googlesource.com/6825
Reviewed-by: Gabe Black <gabeblack@google.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Gabe Black <gabeblack@google.com>

12392:e0dbdf30a2a5 13-Dec-2017 Jason Lowe-Power <jason@lowepower.com>

misc: Updates for gcc7.2 for x86

GCC 7.2 is much stricter than previous GCC versions. The following changes
are needed:

* There is now a warning if there is an implicit fallthrough between two
case statments. C++17 adds the [[fallthrough]]; declaration. However,
to support non C++17 standards (i.e., C++11), we use M5_FALLTHROUGH.
M5_FALLTHROUGH checks for [[fallthrough]] compliant C++17 compiler and
if that doesn't exist, it defaults to nothing (no older compilers
generate warnings).
* The above resulted in a couple of bugs that were found. This is noted
in the review request on gerrit.
* throw() for dynamic exception specification is deprecated
* There were a couple of new uninitialized variable warnings
* Can no longer perform bitwise operations on a bool.
* Must now include <functional> for std::function
* Compiler bug for void* lambda. Changed to auto as work around. See
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82878

Change-Id: I5d4c782a4e133fa4cdb119e35d9aff68c6e2958e
Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-on: https://gem5-review.googlesource.com/5802
Reviewed-by: Gabe Black <gabeblack@google.com>

12390:464513ab8668 13-Dec-2017 Gabe Black <gabeblack@google.com>

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>

12386:2bf5fb25a5f1 13-Dec-2017 Gabe Black <gabeblack@google.com>

arm,sparc,x86,base,cpu,sim: Replace the Twin(32|64)_t types with.

Replace them with std::array<>s.

Change-Id: I76624c87a1cd9b21c386a96147a18de92b8a8a34
Reviewed-on: https://gem5-review.googlesource.com/6602
Maintainer: Gabe Black <gabeblack@google.com>
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>

12384:481add71d2e4 12-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Rework how "split" loads/stores are handled.

Explicitly separate the way the data is represented in the underlying
representation from how it's represented in the instruction.

In order to make the ISA parser happy, the Mem operand needs to have
a single, particular type. To handle that with scalar types, we just
used uint64_ts and then worked with values that were smaller than the
maximum we could hold. To work with these new array values, we also
use an underlying uint64_t for each element.

To make accessing the underlying memory system more natural, when we
go to actually read or write values, we translate the access into an
array of the actual, correct underlying type. That way we don't have
non-exact asserts which confuse gcc, or weird endianness conversion
which assumes that the data should be flipped 8 bytes at a time.

Because the functions involved are generally inline, the syntactic
niceness should all boil off, and the final implementation in the
binary should be simple and efficient for the given data types.

Change-Id: I14ce7a2fe0dc2cbaf6ad4a0d19f743c45ee78e26
Reviewed-on: https://gem5-review.googlesource.com/6582
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12368:511bd7aa22d1 05-Dec-2017 Gabe Black <gabeblack@google.com>

x86: Split apart x87's FSW and TOP, and add a missing break.

The FSW and TOP values are technically part of the same register, but
they have very different behaviors. One of them can be renamed and
float along without affecting global state, while the other requires
serialization. They just need to *look* like the same register when
read by the user.

Also, there was a missing break in setMiscRegNoEffect.

Change-Id: If58de0f566f65068208240f4001209fb9e1826d6
Reviewed-on: https://gem5-review.googlesource.com/6441
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Gabe Black <gabeblack@google.com>

12361:ed9f9d629a7e 04-Dec-2017 Gabe Black <gabeblack@google.com>

x86: LOOP's operand size defaults to 64 bits in 64 bit mode.

The microcode for those instructions needs a directive which overrides
that setting in the instructions emulation environment.

Reported-by: Matt Sinclair <mattdsinclair@gmail.com>

Change-Id: I474d938c0b3cf01da92ec817a58b08de783f1967
Reviewed-on: https://gem5-review.googlesource.com/6301
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Gabe Black <gabeblack@google.com>

12334:e0ab29a34764 30-Nov-2017 Gabe Black <gabeblack@google.com>

misc: Rename misc.(hh|cc) to logging.(hh|cc)

These files aren't a collection of miscellaneous stuff, they're the
definition of the Logger interface, and a few utility macros for
calling into that interface (panic, warn, etc.).

Change-Id: I84267ac3f45896a83c0ef027f8f19c5e9a5667d1
Reviewed-on: https://gem5-review.googlesource.com/6226
Reviewed-by: Brandon Potter <Brandon.Potter@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>


/gem5/ext/sst/gem5.cc
/gem5/src/arch/alpha/isa.cc
/gem5/src/arch/alpha/locked_mem.hh
/gem5/src/arch/alpha/mt.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/pseudo_inst.hh
/gem5/src/arch/alpha/utility.hh
/gem5/src/arch/arm/faults.hh
/gem5/src/arch/arm/isa_device.cc
/gem5/src/arch/arm/miscregs.cc
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/pseudo_inst.hh
/gem5/src/arch/arm/types.hh
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/generic/debugfaults.hh
/gem5/src/arch/generic/pseudo_inst.cc
/gem5/src/arch/generic/tlb.hh
/gem5/src/arch/generic/vec_reg.hh
/gem5/src/arch/hsail/gpu_isa.hh
/gem5/src/arch/mips/decoder.hh
/gem5/src/arch/mips/dsp.cc
/gem5/src/arch/mips/dsp.hh
/gem5/src/arch/mips/interrupts.hh
/gem5/src/arch/mips/locked_mem.hh
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/pagetable.hh
/gem5/src/arch/mips/process.cc
/gem5/src/arch/mips/pseudo_inst.hh
/gem5/src/arch/mips/registers.hh
/gem5/src/arch/mips/utility.cc
/gem5/src/arch/mips/utility.hh
/gem5/src/arch/power/interrupts.hh
/gem5/src/arch/power/isa.hh
/gem5/src/arch/power/process.cc
/gem5/src/arch/power/pseudo_inst.hh
/gem5/src/arch/power/utility.cc
/gem5/src/arch/riscv/decoder.hh
/gem5/src/arch/riscv/interrupts.hh
/gem5/src/arch/riscv/isa.hh
/gem5/src/arch/riscv/locked_mem.hh
/gem5/src/arch/riscv/pagetable.hh
/gem5/src/arch/riscv/process.cc
/gem5/src/arch/riscv/pseudo_inst.hh
/gem5/src/arch/sparc/isa/includes.isa
/gem5/src/arch/sparc/mt.hh
/gem5/src/arch/sparc/pagetable.hh
/gem5/src/arch/sparc/process.cc
/gem5/src/arch/sparc/pseudo_inst.hh
/gem5/src/arch/sparc/tlb.hh
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/bios/intelmp.cc
/gem5/src/arch/x86/decoder.cc
/gem5/src/arch/x86/decoder.hh
/gem5/src/arch/x86/emulenv.cc
/gem5/src/arch/x86/faults.hh
includes.isa
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/regs/int.hh
/gem5/src/base/SConscript
/gem5/src/base/addr_range.hh
/gem5/src/base/bigint.hh
/gem5/src/base/bmpwriter.cc
/gem5/src/base/circlebuf.hh
/gem5/src/base/debug.cc
/gem5/src/base/hostinfo.cc
/gem5/src/base/imgwriter.cc
/gem5/src/base/intmath.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.cc
/gem5/src/base/logging.cc
/gem5/src/base/logging.hh
/gem5/src/base/misc.cc
/gem5/src/base/misc.hh
/gem5/src/base/output.cc
/gem5/src/base/pngwriter.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/random.cc
/gem5/src/base/socket.cc
/gem5/src/base/statistics.cc
/gem5/src/base/stats/text.cc
/gem5/src/base/time.cc
/gem5/src/base/trace.cc
/gem5/src/base/trie.hh
/gem5/src/base/vnc/vncinput.cc
/gem5/src/base/vnc/vncserver.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/func_unit.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/kvm/device.cc
/gem5/src/cpu/kvm/perfevent.cc
/gem5/src/cpu/kvm/timer.cc
/gem5/src/cpu/minor/buffers.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/pc_event.hh
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/ltage.cc
/gem5/src/cpu/pred/sat_counter.hh
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/testers/garnet_synthetic_traffic/GarnetSyntheticTraffic.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/thread_context.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/mc146818.hh
/gem5/src/dev/net/dist_iface.hh
/gem5/src/dev/net/etherbus.cc
/gem5/src/dev/net/etherdump.cc
/gem5/src/dev/net/etherint.cc
/gem5/src/dev/net/etherpkt.cc
/gem5/src/dev/net/ethertap.cc
/gem5/src/dev/net/pktfifo.cc
/gem5/src/dev/net/pktfifo.hh
/gem5/src/dev/pci/device.cc
/gem5/src/dev/platform.cc
/gem5/src/dev/ps2.cc
/gem5/src/dev/serial/serial.cc
/gem5/src/dev/serial/terminal.cc
/gem5/src/dev/storage/disk_image.cc
/gem5/src/dev/storage/simple_disk.cc
/gem5/src/gpu-compute/brig_object.cc
/gem5/src/gpu-compute/gpu_tlb.hh
/gem5/src/gpu-compute/hsa_object.cc
/gem5/src/gpu-compute/misc.hh
/gem5/src/gpu-compute/of_scheduling_policy.hh
/gem5/src/gpu-compute/rr_scheduling_policy.hh
/gem5/src/gpu-compute/simple_pool_manager.cc
/gem5/src/gpu-compute/tlb_coalescer.hh
/gem5/src/gpu-compute/vector_register_file.cc
/gem5/src/gpu-compute/wavefront.hh
/gem5/src/kern/operatingsystem.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache.cc
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/tags/fa_lru.cc
/gem5/src/mem/cache/write_queue_entry.cc
/gem5/src/mem/coherent_xbar.cc
/gem5/src/mem/dramsim2_wrapper.cc
/gem5/src/mem/mem_checker.hh
/gem5/src/mem/noncoherent_xbar.cc
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/request.hh
/gem5/src/mem/ruby/common/Set.hh
/gem5/src/mem/ruby/network/MessageBuffer.cc
/gem5/src/mem/ruby/network/Network.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/slicc_interface/AbstractCacheEntry.hh
/gem5/src/mem/ruby/structures/AbstractReplacementPolicy.cc
/gem5/src/mem/ruby/system/GPUCoalescer.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/VIPERCoalescer.cc
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/slicc/symbols/Type.py
/gem5/src/mem/snoop_filter.cc
/gem5/src/mem/xbar.cc
/gem5/src/proto/protoio.cc
/gem5/src/python/pybind11/core.cc
/gem5/src/python/pybind11/event.cc
/gem5/src/sim/clocked_object.cc
/gem5/src/sim/drain.cc
/gem5/src/sim/dvfs_handler.cc
/gem5/src/sim/eventq.cc
/gem5/src/sim/faults.cc
/gem5/src/sim/fd_array.cc
/gem5/src/sim/init.cc
/gem5/src/sim/init_signals.cc
/gem5/src/sim/mathexpr.cc
/gem5/src/sim/microcode_rom.cc
/gem5/src/sim/root.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/simulate.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/nmtest.cc
/gem5/src/unittest/stattest.cc
/gem5/util/systemc/sc_module.cc
12236:126ac9da6050 04-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86: Merge exec decl templates.

In the ISA instruction definitions, some classes were declared with
execute, etc., functions outside of the main template because they
had CPU specific signatures and would need to be duplicated with
each CPU plugged into them. Now that the instructions always just
use an ExecContext, there's no reason for those templates to be
separate. This change folds those templates together.

Change-Id: I13bda247d3d1cc07c0ea06968e48aa5b4aace7fa
Reviewed-on: https://gem5-review.googlesource.com/5401
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-by: Alec Roelke <ar4jc@virginia.edu>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/arm/insts/pred_inst.hh
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/branch.isa
/gem5/src/arch/arm/isa/templates/branch64.isa
/gem5/src/arch/arm/isa/templates/data64.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/misc.isa
/gem5/src/arch/arm/isa/templates/misc64.isa
/gem5/src/arch/arm/isa/templates/mult.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/isa/templates/vfp64.isa
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/base.isa
/gem5/src/arch/riscv/isa/formats/amo.isa
/gem5/src/arch/riscv/isa/formats/basic.isa
/gem5/src/arch/riscv/isa/formats/mem.isa
/gem5/src/arch/riscv/isa/formats/standard.isa
/gem5/src/arch/riscv/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/includes.isa
/gem5/src/arch/riscv/isa/main.isa
/gem5/src/arch/riscv/isa/micro.isa
/gem5/src/arch/riscv/static_inst.hh
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/mem/basicmem.isa
/gem5/src/arch/sparc/isa/formats/mem/blockmem.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
formats/basic.isa
formats/monitor_mwait.isa
formats/unimp.isa
formats/unknown.isa
macroop.isa
microops/debug.isa
microops/fpop.isa
microops/ldstop.isa
microops/limmop.isa
microops/mediaop.isa
microops/regop.isa
microops/seqop.isa
microops/specop.isa
12234:78ece221f9f5 02-Nov-2017 Gabe Black <gabeblack@google.com>

alpha,arm,mips,power,riscv,sparc,x86,isa: De-specialize ExecContexts.

The ISA parser used to generate different copies of exec functions
for each exec context class a particular CPU wanted to use. That's
since been changed so that those functions take a pointer to the base
ExecContext, so the code which would generate those extra functions
can be removed, and some functions which used to be templated on an
ExecContext subclass can be untemplated, or minimally less templated.

Now that some functions aren't going to be instantiated multiple times
with different signatures, there are also opportunities to collapse
templates and make many instruction definitions simpler within the
parser. Since those changes will be less mechanical, they're left for
later changes and will probably be done in smaller increments.

Change-Id: I0015307bb02dfb9c60380b56d2a820f12169ebea
Reviewed-on: https://gem5-review.googlesource.com/5381
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>


/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/tlbop.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/misc.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/formats/amo.isa
/gem5/src/arch/riscv/isa/formats/basic.isa
/gem5/src/arch/riscv/isa/formats/fp.isa
/gem5/src/arch/riscv/isa/formats/mem.isa
/gem5/src/arch/riscv/isa/formats/standard.isa
/gem5/src/arch/riscv/isa/formats/unknown.isa
/gem5/src/arch/riscv/isa/micro.isa
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/swap.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
formats/basic.isa
formats/cpuid.isa
formats/monitor_mwait.isa
formats/nop.isa
formats/syscall.isa
formats/unimp.isa
formats/unknown.isa
macroop.isa
microops/debug.isa
microops/fpop.isa
microops/ldstop.isa
microops/limmop.isa
microops/mediaop.isa
microops/regop.isa
microops/seqop.isa
microops/specop.isa
/gem5/src/arch/x86/memhelpers.hh
12205:f29b67179a96 26-Sep-2017 Bjoern A. Zeeb <baz21@cam.ac.uk>

arch-x86: fix CondInst decoding for MOV to Control Registers

MOV Rd,Cd is MR encoded but the control register is operand 2
not operand 1 hence this needs to be MODRM_REG not MODRM_RM.
While MOV Cd,Rd is RM encoded registers are also swapped, so
it also needs to be MODRM_REG as well (as it already correctly is).

This fixes incorrect UD2 reportings leading to invalid traps
reported in O3 on X86 FS introduced with 4e939a7 .

Change-Id: Ib33c8ba87b00e0264d33da44fff64ed9e4d2d9d8
Reviewed-on: https://gem5-review.googlesource.com/4861
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Gabe Black <gabeblack@google.com>
Maintainer: Jason Lowe-Power <jason@lowepower.com>

12170:efbf270e389d 24-Aug-2017 Gabe Black <gabeblack@google.com>

x86: Use the new CondInst format for moves to/from control registers.

The condition is whether the control register index is valid.

Change-Id: I8a225fcfd4955032b5bbf7d3392ee5bcc7d6bc64
Reviewed-on: https://gem5-review.googlesource.com/4581
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12169:6d567ca2553b 24-Aug-2017 Gabe Black <gabeblack@google.com>

x86: Add a "CondInst" format for conditionally decoded instructions.

A condition can be specified which will tell the decoder whether to return
the instruction being requested, or, if the condition fails, UD2.

Change-Id: I0f1c075deb10754ce1dd88be1726a196294e41fd
Reviewed-on: https://gem5-review.googlesource.com/4580
Reviewed-by: Michael LeBeane <Michael.Lebeane@amd.com>
Maintainer: Gabe Black <gabeblack@google.com>

12106:7784fac1b159 05-Apr-2017 Rekai Gonzalez-Alberquilla <Rekai.GonzalezAlberquilla@arm.com>

cpu: Simplify the rename interface and use RegId

With the hierarchical RegId there are a lot of functions that are
redundant now.

The idea behind the simplification is that instead of having the regId,
telling which kind of register read/write/rename/lookup/etc. and then
the function panic_if'ing if the regId is not of the appropriate type,
we provide an interface that decides what kind of register to read
depending on the register type of the given regId.

Change-Id: I7d52e9e21fc01205ae365d86921a4ceb67a57178
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
[ Fix RISCV build issues ]
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2702


/gem5/src/arch/alpha/isa.hh
/gem5/src/arch/alpha/isa/branch.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/arm/insts/misc.cc
/gem5/src/arch/arm/isa.hh
/gem5/src/arch/arm/isa/insts/data64.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/mips/isa.hh
/gem5/src/arch/mips/isa/base.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/power/insts/branch.cc
/gem5/src/arch/power/insts/static_inst.cc
/gem5/src/arch/power/isa.hh
/gem5/src/arch/riscv/isa.hh
/gem5/src/arch/riscv/isa/base.isa
/gem5/src/arch/riscv/isa/formats/type.isa
/gem5/src/arch/sparc/isa.hh
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/x86/insts/microfpop.hh
/gem5/src/arch/x86/insts/microldstop.hh
/gem5/src/arch/x86/insts/micromediaop.hh
/gem5/src/arch/x86/insts/microregop.hh
/gem5/src/arch/x86/insts/static_inst.cc
/gem5/src/arch/x86/insts/static_inst.hh
/gem5/src/arch/x86/isa.hh
microops/limmop.isa
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/checker/thread_context.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/exec_context.hh
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/minor/scoreboard.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/probe/elastic_trace.cc
/gem5/src/cpu/o3/regfile.cc
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/reg_class.cc
/gem5/src/cpu/reg_class.hh
/gem5/src/cpu/reg_class_impl.hh
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/timing_expr.cc
12104:edd63f9c6184 05-Apr-2017 Nathanael Premillieu <nathanael.premillieu@arm.com>

arch, cpu: Architectural Register structural indexing

Replace the unified register mapping with a structure associating
a class and an index. It is now much easier to know which class of
register the index is referring to. Also, when adding a new class
there is no need to modify existing ones.

Change-Id: I55b3ac80763702aa2cd3ed2cbff0a75ef7620373
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
[ Fix RISCV build issues ]
Signed-off-by: Andreas Sandberg <andreas.sandberg@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/2700


/gem5/src/arch/alpha/isa/branch.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/registers.hh
/gem5/src/arch/arm/insts/branch64.cc
/gem5/src/arch/arm/insts/data64.cc
/gem5/src/arch/arm/insts/macromem.cc
/gem5/src/arch/arm/insts/mem.cc
/gem5/src/arch/arm/insts/mem.hh
/gem5/src/arch/arm/insts/mem64.cc
/gem5/src/arch/arm/insts/misc.cc
/gem5/src/arch/arm/insts/misc64.cc
/gem5/src/arch/arm/insts/static_inst.cc
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/insts/vfp.cc
/gem5/src/arch/arm/registers.hh
/gem5/src/arch/generic/types.hh
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/isa/base.isa
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/registers.hh
/gem5/src/arch/null/registers.hh
/gem5/src/arch/power/insts/branch.cc
/gem5/src/arch/power/insts/static_inst.cc
/gem5/src/arch/power/insts/static_inst.hh
/gem5/src/arch/power/registers.hh
/gem5/src/arch/riscv/isa/base.isa
/gem5/src/arch/riscv/isa/formats/type.isa
/gem5/src/arch/riscv/registers.hh
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/registers.hh
/gem5/src/arch/x86/insts/microfpop.hh
/gem5/src/arch/x86/insts/microldstop.hh
/gem5/src/arch/x86/insts/micromediaop.hh
/gem5/src/arch/x86/insts/microregop.hh
/gem5/src/arch/x86/insts/static_inst.cc
/gem5/src/arch/x86/insts/static_inst.hh
microops/limmop.isa
specialize.isa
/gem5/src/arch/x86/registers.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/minor/dyn_inst.cc
/gem5/src/cpu/minor/dyn_inst.hh
/gem5/src/cpu/minor/exec_context.hh
/gem5/src/cpu/minor/scoreboard.cc
/gem5/src/cpu/minor/scoreboard.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/probe/elastic_trace.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rename_map.hh
/gem5/src/cpu/o3/rob.hh
/gem5/src/cpu/reg_class.cc
/gem5/src/cpu/reg_class.hh
/gem5/src/cpu/simple/exec_context.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/timing_expr.cc
12045:31d9a81ba286 24-May-2017 Gabe Black <gabeblack@google.com>

x86: Rework how VEX prefixes are decoded.

Remove redundant information from the ExtMachInst, hash the vex
information to ensure the decode cache works properly, print the vex info
when printing an ExtMachInst, consider the vex info when comparing two
ExtMachInsts, fold the info from the vex prefixes into existing settings,
remove redundant decode code, handle vex prefixes one byte at a time and
don't bother building up the entire prefix, and let instructions that care
about vex use it in their implementation, instead of developing an entire
parallel decode tree.

This also eliminates the error prone vex immediate decode table which was
incomplete and would result in an out of bounds access for incorrectly
encoded instructions or when the CPU was mispeculating, as it was (as far
as I can tell) redundant with the tables that already existed for two and
three byte opcodes. There were differences, but I think those may have
been mistakes based on the documentation I found.

Also, in 32 bit mode, the VEX prefixes might actually be LDS or LES
instructions which are still legal in that mode. A valid VEX prefix would
look like an LDS/LES with an otherwise invalid modrm encoding, so use that
as a signal to abort processing the VEX and turn the instruction into an
LES/LDS as appropriate.

Change-Id: Icb367eaaa35590692df1c98862f315da4c139f5c
Reviewed-on: https://gem5-review.googlesource.com/3501
Reviewed-by: Joe Gross <joe.gross@amd.com>
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

12025:fbfb3dd3f324 15-May-2017 Gabe Black <gabeblack@google.com>

x86: Fix the multiplication microops.

If the operands were 64 bit, an intermediate calculation could lose a
carry bit. This change rearranges that intermediate calculation if the
operand width is large, and reworks the microop implementation in general
in an attempt to make it easier to understand.

Change-Id: Ib36333f3f2695a33cd9623e43682de22ebd2e7ea
Reviewed-on: https://gem5-review.googlesource.com/3381
Reviewed-by: Jason Lowe-Power <jason@lowepower.com>
Reviewed-by: Anthony Gutierrez <anthony.gutierrez@amd.com>
Maintainer: Anthony Gutierrez <anthony.gutierrez@amd.com>

11877:5ea85692a53e 20-Jul-2015 Brandon Potter <brandon.potter@amd.com>

syscall_emul: [patch 13/22] add system call retry capability

This changeset adds functionality that allows system calls to retry without
affecting thread context state such as the program counter or register values
for the associated thread context (when system calls return with a retry
fault).

This functionality is needed to solve problems with blocking system calls
in multi-process or multi-threaded simulations where information is passed
between processes/threads. Blocking system calls can cause deadlock because
the simulator itself is single threaded. There is only a single thread
servicing the event queue which can cause deadlock if the thread hits a
blocking system call instruction.

To illustrate the problem, consider two processes using the producer/consumer
sharing model. The processes can use file descriptors and the read and write
calls to pass information to one another. If the consumer calls the blocking
read system call before the producer has produced anything, the call will
block the event queue (while executing the system call instruction) and
deadlock the simulation.

The solution implemented in this changeset is to recognize that the system
calls will block and then generate a special retry fault. The fault will
be sent back up through the function call chain until it is exposed to the
cpu model's pipeline where the fault becomes visible. The fault will trigger
the cpu model to replay the instruction at a future tick where the call has
a chance to succeed without actually going into a blocking state.

In subsequent patches, we recognize that a syscall will block by calling a
non-blocking poll (from inside the system call implementation) and checking
for events. When events show up during the poll, it signifies that the call
would not have blocked and the syscall is allowed to proceed (calling an
underlying host system call if necessary). If no events are returned from the
poll, we generate the fault and try the instruction for the thread context
at a distant tick. Note that retrying every tick is not efficient.

As an aside, the simulator has some multi-threading support for the event
queue, but it is not used by default and needs work. Even if the event queue
was completely multi-threaded, meaning that there is a hardware thread on
the host servicing a single simulator thread contexts with a 1:1 mapping
between them, it's still possible to run into deadlock due to the event queue
barriers on quantum boundaries. The solution of replaying at a later tick
is the simplest solution and solves the problem generally.

11829:cb5390385d87 10-Feb-2017 Jason Lowe-Power <jason@lowepower.com>

x86: Fix implicit stack addressing in 64-bit mode

When in 64-bit mode, if the stack is accessed implicitly by an instruction
the alternate address prefix should be ignored if present.

This patch adds an extra flag to the ldstop which signifies when the
address override should be ignored. Then, for all of the affected
instructions, this patch adds two options to the ld and st opcode to use
the current stack addressing mode for all addresses and to ignore the
AddressSizeFlagBit. Finally, this patch updates the x86 TLB to not
truncate the address if it is in 64-bit mode and the IgnoreAddrSizeFlagBit
is set.

This fixes a problem when calling __libc_start_main with a binary that is
linked with a recent version of ld. This version of ld uses the address
override prefix (0x67) on the call instruction instead of a nop.

Note: This has not been tested in compatibility mode and only the call
instruction with the address override prefix has been tested.

See [1] page 9 (pdf page 45)

For instructions that are affected see [1] page 519 (pdf page 555).

[1] http://support.amd.com/TechDocs/24594.pdf

Signed-off-by: Jason Lowe-Power <jason@lowepower.com>

11711:8565c34ec32e 21-Nov-2016 Tony Gutierrez <anthony.gutierrez@amd.com>

x86: fix issue with casting in Cvtf2i

UBSAN flags this operation because it detects that arg is being cast directly
to an unsigned type, argBits. this patch fixes this by first casting the
value to a signed int type, then reintrepreting the raw bits of the signed
int into argBits.

11703:08b78e0a3717 26-Oct-2016 Michael LeBeane <michael.lebeane@amd.com>

dev: Add m5 op to toggle synchronization for dist-gem5.
This patch adds the ability for an application to request dist-gem5 to begin/
end synchronization using an m5 op. When toggling on sync, all nodes agree
on the next sync point based on the maximum of all nodes' ticks. CPUs are
suspended until the sync point to avoid sending network messages until sync has
been enabled. Toggling off sync acts like a global execution barrier, where
all CPUs are disabled until every node reaches the toggle off point. This
avoids tricky situations such as one node hitting a toggle off followed by a
toggle on before the other nodes hit the first toggle off.

11329:82bb3ee706b3 06-Feb-2016 Alexandru Dutu <alexandru.dutu@amd.com>

x86: revamp cmpxchg8b/cmpxchg16b implementation

The previous implementation did a pair of nested RMW operations,
which isn't compatible with the way that locked RMW operations are
implemented in the cache models. It was convenient though in that
it didn't require any new micro-ops, and supported cmpxchg16b using
64-bit memory ops. It also worked in AtomicSimpleCPU where
atomicity was guaranteed by the core and not by the memory system.
It did not work with timing CPU models though.

This new implementation defines new 'split' load and store micro-ops
which allow a single memory operation to use a pair of registers as
the source or destination, then uses a single ldsplit/stsplit RMW
pair to implement cmpxchg. This patch requires support for 128-bit
memory accesses in the ISA (added via a separate patch) to support
cmpxchg16b.

11328:9512d2e25f14 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

arch, x86: add support for arrays as memory operands

Although the cache models support wider accesses, the ISA descriptions
assume that (for the most part) memory operands are integer types,
which makes it difficult to define instructions that do memory accesses
larger than 64 bits.

This patch adds some generic support for memory operands that are arrays
of uint64_t, and specifically a 'u2qw' operand type for x86 that is an
array of 2 uint64_ts (128 bits). This support is unused at this point,
but will be needed shortly for cmpxchg16b. Ideally the 128-bit SSE
memory accesses will also be rewritten to use this support.

Support for 128-bit accesses could also have been added using the gcc
__int128_t extension, which would have been less disruptive. However,
although clang also supports __int128_t, it's still non-standard.
Also, more importantly, this approach creates a path to defining
256- and 512-byte operands as well, which will be useful for eventual
AVX support.

11320:42ecb523c64a 06-Feb-2016 Steve Reinhardt <steve.reinhardt@amd.com>

style: remove trailing whitespace

Result of running 'hg m5style --skip-all --fix-white -a'.


/gem5/configs/common/CacheConfig.py
/gem5/configs/common/Simulation.py
/gem5/configs/example/ruby_mem_test.py
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/linux/linux.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/interrupts.cc
/gem5/src/arch/arm/isa/bitfields.isa
/gem5/src/arch/arm/isa/formats/pred.isa
/gem5/src/arch/arm/linux/linux.hh
/gem5/src/arch/arm/stacktrace.cc
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/linux/linux.hh
/gem5/src/arch/mips/linux/process.cc
/gem5/src/arch/mips/pagetable.hh
/gem5/src/arch/power/SConscript
/gem5/src/arch/sparc/interrupts.cc
/gem5/src/arch/sparc/linux/linux.hh
/gem5/src/arch/sparc/pagetable.hh
/gem5/src/arch/x86/cpuid.cc
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/micromediaop.hh
insts/general_purpose/system_calls.py
insts/romutil.py
insts/simd64/integer/data_transfer/move.py
microops/base.isa
microops/mediaop.isa
microops/regop.isa
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/flags.hh
/gem5/src/base/inet.cc
/gem5/src/base/inet.hh
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/statistics.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.cc
/gem5/src/cpu/testers/directedtest/DirectedGenerator.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/timebuf.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/net/i8254xGBe.cc
/gem5/src/dev/net/i8254xGBe.hh
/gem5/src/dev/net/i8254xGBe_defs.hh
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i8254.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/mem/mport.hh
/gem5/src/mem/ruby/network/Topology.cc
/gem5/src/mem/ruby/network/Topology.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.cc
/gem5/src/mem/ruby/network/fault_model/FaultModel.hh
/gem5/src/mem/ruby/network/fault_model/FaultModel.py
/gem5/src/mem/ruby/network/fault_model/SConscript
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetLink_d.py
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetLink.py
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/simple/SimpleLink.cc
/gem5/src/mem/slicc/ast/StallAndWaitStatementAST.py
/gem5/src/mem/slicc/ast/TypeFieldEnumAST.py
/gem5/src/mem/slicc/ast/TypeFieldStateAST.py
/gem5/src/python/m5/util/__init__.py
/gem5/src/python/swig/event.i
/gem5/src/sim/Root.py
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/unittest/cprintftest.cc
/gem5/system/alpha/console/console.c
/gem5/tests/configs/memtest-ruby.py
/gem5/util/checkpoint-tester.py
/gem5/util/compile
/gem5/util/m5/m5.c
/gem5/util/qdo
/gem5/util/statetrace/SConstruct
11303:f694764d656d 17-Jan-2016 Steve Reinhardt <steve.reinhardt@amd.com>

cpu. arch: add initiateMemRead() to ExecContext interface

For historical reasons, the ExecContext interface had a single
function, readMem(), that did two different things depending on
whether the ExecContext supported atomic memory mode (i.e.,
AtomicSimpleCPU) or timing memory mode (all the other models).
In the former case, it actually performed a memory read; in the
latter case, it merely initiated a read access, and the read
completion did not happen until later when a response packet
arrived from the memory system.

This led to some confusing things, including timing accesses
being required to provide a pointer for the return data even
though that pointer was only used in atomic mode.

This patch splits this interface, adding a new initiateMemRead()
function to the ExecContext interface to replace the timing-mode
use of readMem().

For consistency and clarity, the readMemTiming() helper function
in the ISA definitions is renamed to initiateMemRead() as well.
For x86, where the access size is passed in explicitly, we can
also get rid of the data parameter at this level. For other ISAs,
where the access size is determined from the type of the data
parameter, we have to keep the parameter for that purpose.

11289:ab19693da8c9 07-Jan-2016 Gabor Dozsa <gabor.dozsa@arm.com>

pseudo inst,util: Add optional key to initparam pseudo instruction

The key parameter can be used to read out various config parameters from
within the simulated software.

11160:10f28b61fcb1 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement rcpps and rcpss SSE insts

These are packed single-precision approximate reciprocal operations,
vector and scalar versions, respectively.

This code was basically developed by copying the code for
sqrtps and sqrtss. The mrcp micro-op was simplified relative to
msqrt since there are no double-precision versions of this operation.

11159:9459593cb649 06-Oct-2015 Steve Reinhardt <steve.reinhardt@amd.com>

x86: implement fild, fucomi, and fucomip x87 insts

fild loads an integer value into the x87 top of stack register.
fucomi/fucomip compare two x87 register values (the latter
also doing a stack pop).
These instructions are used by some versions of GNU libstdc++.

10959:30c700ee0d47 20-Jul-2015 David Hashe <david.hashe@amd.com>

x86: x86 instruction-implementation bug fixes

Added explicit data sizes and an opcode type for correct execution.

10924:d02e9c239892 17-Jul-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: decode instructions with vex prefix

This patch updates the x86 decoder so that it can decode instructions with vex
prefix. It also updates the isa with opcodes from vex opcode maps 1, 2 and 3.
Note that none of the instructions have been implemented yet. The
implementations would be provided in due course of time.

10899:b8b8ad2c72dd 04-Jul-2015 Nikos Nikoleris <nikos.nikoleris@gmail.com>

x86: Adjust the size of the values written to the x87 misc registers
All x87 misc registers are implemented in an array of 64 bit values
but in real hardware the size of some of these registers is smaller.
Previsouly all 64 bits where incorrectly set and then later read. To
ensure correctness we mask the value in setMiscRegNoEffect to write
only the valid bits.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10805:f2c472d4ff9c 29-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: change divide-by-zero fault to divide-error
Same exception is raised whether division with zero is performed or the
quotient is greater than the maximum value that the provided space can hold.
Divide-by-Zero is the AMD terminology, while Divide-Error is Intel's.

10784:2f1a0f6d5d77 13-Apr-2015 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 mult/div instructions

10773:16643e7b322a 03-Apr-2015 Lena Olson <lena@cs.wisc.edu>

x86: fix debug trace output for mwait

When running with the Exec flag, the mwait instruction attempted
to print out its source registers, which were never actually
initialized. This led to sporadic assertion failures when the
value stored there was invalid.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10760:8f5993cfa916 23-Mar-2015 Steve Reinhardt <steve.reinhardt@amd.com>

mem: rename Locked/LOCKED to LockedRMW/LOCKED_RMW

Makes x86-style locked operations even more distinct from
LLSC operations. Using "locked" by itself should be
obviously ambiguous now.

10644:24447dc69101 10-Jan-2015 Emilio Castillo <castilloe@unican.es>

x86 : fxsave and fxrestore missing template code

This patch corrects the FXSAVE and FXRSTOR Macroops. The actual code used for
saving/restore the FP registers is in the file but it was not used.

The FXSAVE and FXRSTOR instructions are used in the kernel for saving and
loading the state of the mmx,xmm and fpu registers.

This operation is triggered in FS by issuing a Device Not Available Fault. The
cr0 register has a TS flag that is set upon each context change. Every time a
task access any FP related register (SIMD as well) if the TS flag is set to
one, the device not available fault is issued. The kernel saves the current
state of the registers, and restore the previous state of the currently running
task.

Right now Gem5 lacks of this capability. the Device Not Available Fault is
never issued, leading to several problems when different threads share the same
CPU and SMT is not used. The PARSEC Ferret benchmark is an example of this
behavior.

In order to test this a hack in the atomic cpu code was done to detect if a
static instruction has any FP operands and the cr0 reg TS bit is set. This
check must be done in the ISA dependent code. But it seems to be tricky to
access the cr0 register while executing an instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10632:b415e0dabe21 03-Jan-2015 Maxime Martinasso <maxime.cscs@gmail.com>

x86: implements the simd128 ADDSUBPD instruction

This patch implements the simd128 ADDSUBPD instruction for the x86 architecture.

Tested with a simple program in assembly language which executes the
instruction. Checked that different versions of the instruction are executed
by using the execution tracing option.

Committed by: Nilay Vaish <nilay@cs.wisc.edu

10593:a39de7b8d2c9 04-Dec-2014 Gabe Black <gabeblack@google.com>

x86: Rework opcode parsing to support 3 byte opcodes properly.

Instead of counting the number of opcode bytes in an instruction and recording
each byte before the actual opcode, we can represent the path we took to get to
the actual opcode byte by using a type code. That has a couple of advantages.
First, we can disambiguate the properties of opcodes of the same length which
have different properties. Second, it reduces the amount of data stored in an
ExtMachInst, making them slightly easier/faster to create and process. This
also adds some flexibility as far as how different types of opcodes are
handled, which might come in handy if we decide to support VEX or XOP
instructions.

This change also adds tables to support properly decoding 3 byte opcodes.
Before we would fall off the end of some arrays, on top of the ambiguity
described above.

This change doesn't measureably affect performance on the twolf benchmark.

10544:049273bc03f6 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: Fix setting segment bases in real mode.

The data size used for actually writing the base value for the segment was the
default size, but really it should set the entire value without any possible
truncation.

10543:8fb2884b0a75 17-Nov-2014 Gabe Black <gabeblack@google.com>

x86: Fix some bugs in the real mode far jmp instruction.

The far pointer should be shifted right to get the selector value, not left.
Also, when calculating the width of the offset, the wrong register was used in
one spot.

10529:05b5a6cf3521 06-Nov-2014 Marc Orr <morr@cs.wisc.edu>

x86 isa: This patch attempts an implementation at mwait.

Mwait works as follows:
1. A cpu monitors an address of interest (monitor instruction)
2. A cpu calls mwait - this loads the cache line into that cpu's cache.
3. The cpu goes to sleep.
4. When another processor requests write permission for the line, it is
evicted from the sleeping cpu's cache. This eviction is forwarded to the
sleeping cpu, which then wakes up.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

10474:799c8ee4ecba 16-Oct-2014 Andreas Hansson <andreas.hansson@arm.com>

arch: Use shared_ptr for all Faults

This patch takes quite a large step in transitioning from the ad-hoc
RefCountingPtr to the c++11 shared_ptr by adopting its use for all
Faults. There are no changes in behaviour, and the code modifications
are mostly just replacing "new" with "make_shared".


/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/faults.hh
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tlb.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/interrupts.hh
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/formats/unimp.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/branch64.isa
/gem5/src/arch/arm/isa/insts/data64.isa
/gem5/src/arch/arm/isa/insts/fp.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/insts/misc64.isa
/gem5/src/arch/arm/isa/insts/neon.isa
/gem5/src/arch/arm/isa/insts/neon64.isa
/gem5/src/arch/arm/isa/insts/neon64_mem.isa
/gem5/src/arch/arm/isa/insts/swap.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/vfp.isa
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/generic/memhelpers.hh
/gem5/src/arch/mips/interrupts.cc
/gem5/src/arch/mips/isa.hh
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/power/tlb.cc
/gem5/src/arch/power/tlb.hh
/gem5/src/arch/sparc/interrupts.hh
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/decoder.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/sparc/tlb.cc
/gem5/src/arch/sparc/tlb.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/interrupts.cc
formats/string.isa
formats/unknown.isa
insts/general_purpose/compare_and_test/bounds.py
insts/general_purpose/control_transfer/interrupts_and_exceptions.py
insts/general_purpose/control_transfer/jump.py
insts/system/undefined_operation.py
insts/x87/arithmetic/addition.py
insts/x87/arithmetic/subtraction.py
insts/x87/data_transfer_and_conversion/exchange.py
microops/debug.isa
microops/regop.isa
/gem5/src/arch/x86/memhelpers.hh
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/arch/x86/vtophys.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/exec_context.hh
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/faults.hh
/gem5/src/sim/tlb.hh
10341:0b4d10f53c2d 03-Sep-2014 Mitch Hayenga <mitch.hayenga@arm.com>

x86: Flag instructions that call suspend as IsQuiesce

The o3 cpu relies upon instructions that suspend a thread context being
flagged as "IsQuiesce". If they are not, unpredictable behavior can occur.
This patch fixes that for the x86 ISA.

10313:01dda09b93e5 01-Sep-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: set op class of two fp instructions
This patch sets op class of two fp instructions: movfp and pop x87 stack
as IntAluOp since these instructions do not make use of the fp alu.

10196:be0e1724eb39 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: teach ISA parser how to split code across files

This patch encompasses several interrelated and interdependent changes
to the ISA generation step. The end goal is to reduce the size of the
generated compilation units for instruction execution and decoding so
that batch compilation can proceed with all CPUs active without
exhausting physical memory.

The ISA parser (src/arch/isa_parser.py) has been improved so that it can
accept 'split [output_type];' directives at the top level of the grammar
and 'split(output_type)' python calls within 'exec {{ ... }}' blocks.
This has the effect of "splitting" the files into smaller compilation
units. I use air-quotes around "splitting" because the files themselves
are not split, but preprocessing directives are inserted to have the same
effect.

Architecturally, the ISA parser has had some changes in how it works.
In general, it emits code sooner. It doesn't generate per-CPU files,
and instead defers to the C preprocessor to create the duplicate copies
for each CPU type. Likewise there are more files emitted and the C
preprocessor does more substitution that used to be done by the ISA parser.

Finally, the build system (SCons) needs to be able to cope with a
dynamic list of source files coming out of the ISA parser. The changes
to the SCons{cript,truct} files support this. In broad strokes, the
targets requested on the command line are hidden from SCons until all
the build dependencies are determined, otherwise it would try, realize
it can't reach the goal, and terminate in failure. Since build steps
(i.e. running the ISA parser) must be taken to determine the file list,
several new build stages have been inserted at the very start of the
build. First, the build dependencies from the ISA parser will be emitted
to arch/$ISA/generated/inc.d, which is then read by a new SCons builder
to finalize the dependencies. (Once inc.d exists, the ISA parser will not
need to be run to complete this step.) Once the dependencies are known,
the 'Environments' are made by the makeEnv() function. This function used
to be called before the build began but now happens during the build.
It is easy to see that this step is quite slow; this is a known issue
and it's important to realize that it was already slow, but there was
no obvious cause to attribute it to since nothing was displayed to the
terminal. Since new steps that used to be performed serially are now in a
potentially-parallel build phase, the pathname handling in the SCons scripts
has been tightened up to deal with chdir() race conditions. In general,
pathnames are computed earlier and more likely to be stored, passed around,
and processed as absolute paths rather than relative paths. In the end,
some of these issues had to be fixed by inserting serializing dependencies
in the build.

Minor note:
For the null ISA, we just provide a dummy inc.d so SCons is never
compelled to try to generate it. While it seems slightly wrong to have
anything in src/arch/*/generated (i.e. a non-generated 'generated' file),
it's by far the simplest solution.


/gem5/SConstruct
/gem5/src/SConscript
/gem5/src/arch/SConscript
/gem5/src/arch/alpha/SConscript
/gem5/src/arch/alpha/isa/fp.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa/mem.isa
/gem5/src/arch/alpha/isa/opcdec.isa
/gem5/src/arch/alpha/isa/unimp.isa
/gem5/src/arch/alpha/isa/unknown.isa
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/formats/unimp.isa
/gem5/src/arch/arm/isa/templates/basic.isa
/gem5/src/arch/arm/isa/templates/macromem.isa
/gem5/src/arch/arm/isa/templates/mem.isa
/gem5/src/arch/arm/isa/templates/mem64.isa
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/isa/templates/neon64.isa
/gem5/src/arch/arm/isa/templates/pred.isa
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/SConscript
/gem5/src/arch/mips/isa/formats/basic.isa
/gem5/src/arch/mips/isa/formats/control.isa
/gem5/src/arch/mips/isa/formats/dsp.isa
/gem5/src/arch/mips/isa/formats/fp.isa
/gem5/src/arch/mips/isa/formats/int.isa
/gem5/src/arch/mips/isa/formats/mem.isa
/gem5/src/arch/mips/isa/formats/mt.isa
/gem5/src/arch/mips/isa/formats/noop.isa
/gem5/src/arch/mips/isa/formats/tlbop.isa
/gem5/src/arch/mips/isa/formats/trap.isa
/gem5/src/arch/mips/isa/formats/unimp.isa
/gem5/src/arch/mips/isa/formats/unknown.isa
/gem5/src/arch/null/generated/inc.d
/gem5/src/arch/power/SConscript
/gem5/src/arch/power/isa/formats/basic.isa
/gem5/src/arch/power/isa/formats/mem.isa
/gem5/src/arch/power/isa/formats/misc.isa
/gem5/src/arch/power/isa/formats/unimp.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/sparc/SConscript
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/formats/basic.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/integerop.isa
/gem5/src/arch/sparc/isa/formats/mem/swap.isa
/gem5/src/arch/sparc/isa/formats/mem/util.isa
/gem5/src/arch/sparc/isa/formats/nop.isa
/gem5/src/arch/sparc/isa/formats/priv.isa
/gem5/src/arch/sparc/isa/formats/trap.isa
/gem5/src/arch/sparc/isa/formats/unimp.isa
/gem5/src/arch/sparc/isa/formats/unknown.isa
/gem5/src/arch/x86/SConscript
formats/basic.isa
formats/cpuid.isa
formats/nop.isa
formats/syscall.isa
formats/unimp.isa
formats/unknown.isa
microops/debug.isa
microops/fpop.isa
microops/ldstop.isa
microops/limmop.isa
microops/mediaop.isa
microops/regop.isa
microops/seqop.isa
microops/specop.isa
/gem5/tests/SConscript
10184:bbfa3152bdea 09-May-2014 Curtis Dunham <Curtis.Dunham@arm.com>

arch: remove inline specifiers on all inst constrs, all ISAs

With (upcoming) separate compilation, they are useless. Only
link-time optimization could re-inline them, but ideally
feedback-directed optimization would choose to do so only for
profitable (i.e. common) instructions.

10045:8bc3887d5e72 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: use lfpimm instead of limm for fptan

10044:42e058cae3d0 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements x87 add/sub instructions

10043:301f2c0b3423 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fxch instruction.

10042:d4405a6bcc5a 27-Jan-2014 Nilay Vaish <nilay@cs.wisc.edu>

x86: correct error in emms instruction.

9985:d70124a5d594 26-Nov-2013 Christian Menard <christian.menard@tu-dresden.de>

x86: Implementation of Int3 and Int_Ib in long mode

This is an implementation of the x86 int3 and int immediate
instructions for long mode according to 'AMD64 Programmers Manual
Volume 3'.

9921:ee049bfce978 15-Oct-2013 Yasuko Eckert <yasuko.eckert@amd.com>

arch/x86: add support for explicit CC register file

Convert condition code registers from being specialized
("pseudo") integer registers to using the recently
added CC register class.

Nilay Vaish also contributed to this patch.

9896:e31776cf4743 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FXSAVE, FXSAVE64, FXRSTOR, and FXRSTOR64

9895:a1f661af9dc9 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for FLDENV & FNSTENV

9894:c0a3920859bd 29-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for loading 32-bit and 80-bit floats in the x87

The x87 FPU supports three floating point formats: 32-bit, 64-bit, and
80-bit floats. The current gem5 implementation supports 32-bit and
64-bit floats, but only works correctly for 64-bit floats. This
changeset fixes the 32-bit float handling by correctly loading and
rounding (using truncation) 32-bit floats instead of simply truncating
the bit pattern.

80-bit floats are loaded by first loading the 80-bits of the float to
two temporary integer registers. A micro-op (cvtint_fp80) then
converts the contents of the two integer registers to the internal FP
representation (double). Similarly, when storing an 80-bit float,
there are two conversion routines (ctvfp80h_int and cvtfp80l_int) that
convert an internal FP register to 80-bit and stores the upper 64-bits
or lower 32-bits to an integer register, which is the written to
memory using normal integer stores.

9893:5924b77fb8fc 30-Sep-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix re-entrancy problems in x87 store instructions

X87 store instructions typically loads and pops the top value of the
stack and stores it in memory. The current implementation pops the
stack at the same time as the floating point value is loaded to a
temporary register. This will corrupt the state of the x87 stack if
the store fails. This changeset introduces a pop87 micro-instruction
that pops the stack and uses this instruction in the affected
macro-instructions to pop the stack after storing the value to memory.

9765:da0e0df0ba97 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Add support for maintaining the x87 tag word

The current implementation of the x87 never updates the x87 tag
word. This is currently not a big issue since the simulated x87 never
checks for stack overflows, however this becomes an issue when
switching between a virtualized CPU and a simulated CPU. This
changeset adds support, which is enabled by default, for updating the
tag register to every floating point microop that updates the stack
top using the spm mechanism.

The new tag words is generated by the helper function
X86ISA::genX87Tags(). This function is currently limited to flagging a
stack position as valid or invalid and does not try to distinguish
between the valid, zero, and special states.

9764:7e744dcb1904 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix loading of floating point constants

This changeset actually fixes two issues:

* The lfpimm instruction didn't work correctly when applied to a
floating point constant (it did work for integers containing the
bit string representation of a constant) since it used
reinterpret_cast to convert a double to a uint64_t. This caused a
compilation error, at least, in gcc 4.6.3.

* The instructions loading floating point constants in the x87
processor didn't work correctly since they just stored a truncated
integer instead of a double in the floating point register. This
changeset fixes the old microcode by using lfpimm instruction
instead of the limm instructions.

9761:f2102d45a753 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Make fprem like the fprem on a real x87

The current implementation of fprem simply does an fmod and doesn't
simulate any of the iterative behavior in a real fprem. This isn't
normally a problem, however, it can lead to problems when switching
between CPU models. If switching from a real CPU in the middle of an
fprem loop to a simulated CPU, the output of the fprem loop becomes
correupted. This changeset changes the fprem implementation to work
like the one on real hardware.

9758:353587055aff 18-Jun-2013 Andreas Sandberg <andreas@sandberg.pp.se>

x86: Fix the flag handling code in FABS and FCHS

This changeset fixes two problems in the FABS and FCHS
implementation. First, the ISA parser expects the assignment in
flag_code to be a pure assignment and not an and-assignment, which
leads to the isa_parser omitting the misc reg update. Second, the FCHS
and FABS macro-ops don't set the SetStatus flag, which means that the
default micro-op version, which doesn't update FSW, is executed.

9700:2ea56473f400 21-May-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: mark instructions for being function call/return
Currently call and return instructions are marked as IsCall and IsReturn. Thus, the
branch predictor does not use RAS for these instructions. Similarly, the number of
function calls that took place is recorded as 0. This patch marks these instructions
as they should be.

9699:76828cbe5de4 21-May-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: add op class for int and fp microops in isa description
Currently all the integer microops are marked as IntAluOp and the floating
point microops are marked as FloatAddOp. This patch adds support for marking
different microops differently. Now IntMultOp, IntDivOp, FloatDivOp,
FloatMultOp, FloatCvtOp, FloatSqrtOp classes will be used as well. This will
help in providing different latencies for different op class.

9671:483f5ff33dd1 23-Apr-2013 Christian Menard <Christian.Menard@tu-dresden.de>

x86: increment the stack pointer in lret inst
The 'lret' instruction reloads instruction pointer and code segment from the
stack and then pops them. But the popping part is missing from the current
implementation. This caused incorrect behavior in some code related to the
Fiasco OS. Microops are being added to rectify the behavior of the instruction.

Committed by: Nilay Vaish <nilay@cs.wisc.edu>

9582:0632d2d1575c 11-Mar-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement some of the x87 instructions
This patch implements ftan, fprem, fyl2x, fld* floating-point instructions.

9557:8666e81607a6 19-Feb-2013 Andreas Hansson <andreas.hansson@arm.com>

scons: Fix warnings issued by clang 3.2svn (XCode 4.6)

This patch fixes the warnings that clang3.2svn emit due to the "-Wall"
flag. There is one case of an uninitialised value in the ARM neon ISA
description, and then a whole range of unused private fields that are
pruned.

9472:8a2175fa7fa0 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements fsin, fcos instructions

9471:4193ed60eed7 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implements emms instruction

9470:68f7e0bcf4aa 15-Jan-2013 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement fabs, fchs instructions

9457:a4739b6f799d 08-Jan-2013 Lluís Vilanova <vilanova@ac.upc.edu>

util: add m5_fail op.

Used as a command in full-system scripts helps the user ensure the benchmarks have finished successfully.

For example, one can use:

/path/to/benchmark args || /sbin/m5 fail 1

and thus ensure gem5 will exit with an error if the benchmark fails.

9372:7ba317c33683 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fnstsw
This patch implements the fnstsw instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9371:7c1484cc9b10 30-Dec-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: implement x87 fp instruction fsincos
This patch implements the fsincos instruction. The code was originally written
by Vince Weaver. Gabe had made some comments about the code, but those were
never addressed. This patch addresses those comments.

9212:dc386ccc1db9 11-Sep-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: make use of register predication
The patch introduces two predicates for condition code registers -- one
tests if a register needs to be read, the other tests whether a register
needs to be written to. These predicates are evaluated twice -- during
construction of the microop and during its execution. Register reads
and writes are elided depending on how the predicates evaluate.

9211:46c3a74952ec 11-Sep-2012 Nilay Vaish <nilay@cs.wisc.edu>

x86: Add a separate register for D flag bit
The D flag bit is part of the cc flag bit register currently. But since it
is not being used any where in the implementation, it creates an unnecessary
dependency. Hence, it is being moved to a separate register.

9038:d7ddf3266d46 04-Jun-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Ensure that the CPUID instruction always writes its outputs.

The CPUID instruction was implemented so that it would only write its results
if the instruction was successful. This works fine on the simple CPU where
unwritten registers retain their old values, but on a CPU like O3 with
renaming this is broken. The instruction needs to write the old values back
into the registers explicitly if they aren't being changed.

9023:e9201a7bce59 26-May-2012 Gabe Black <gblack@eecs.umich.edu>

CPU: Merge the predecoder and decoder.

These classes are always used together, and merging them will give the ISAs
more flexibility in how they cache things and manage the process.

9022:bb25e7646c41 25-May-2012 Gabe Black <gblack@eecs.umich.edu>

ISA: Make the decode function part of the ISA's decoder.

9010:7891b96e1526 22-May-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: Split Condition Code register
This patch moves the ECF and EZF bits to individual registers (ecfBit and
ezfBit) and the CF and OF bits to cfofFlag registers. This is being done
so as to lower the read after write dependencies on the the condition code
register. Ultimately we will have the following registers [ZAPS], [OF],
[CF], [ECF], [EZF] and [DF]. Note that this is only one part of the
solution for lowering the dependencies. The other part will check whether
or not the condition code register needs to be actually read. This would
be done through a separate patch.

9009:d45a02bd5391 19-May-2012 Marc Orr <marc.orr@gmail.com>

x86 ISA: Implement the sse3 haddps instruction.

Shuffle the 32 bit values into position, and then add in parallel.

8973:d69afa89c2ee 29-Apr-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the IMUL_R_P_I macroop.

The disp displacement was left off the load microop so the wrong value was
used.

8946:fb6c89334b86 14-Apr-2012 Andreas Hansson <andreas.hansson@arm.com>

clang/gcc: Fix compilation issues with clang 3.0 and gcc 4.6

This patch addresses a number of minor issues that cause problems when
compiling with clang >= 3.0 and gcc >= 4.6. Most importantly, it
avoids using the deprecated ext/hash_map and instead uses
unordered_map (and similarly so for the hash_set). To make use of the
new STL containers, g++ and clang has to be invoked with "-std=c++0x",
and this is now added for all gcc versions >= 4.6, and for clang >=
3.0. For gcc >= 4.3 and <= 4.5 and clang <= 3.0 we use the tr1
unordered_map to avoid the deprecation warning.

The addition of c++0x in turn causes a few problems, as the
compiler is more stringent and adds a number of new warnings. Below,
the most important issues are enumerated:

1) the use of namespaces is more strict, e.g. for isnan, and all
headers opening the entire namespace std are now fixed.

2) another other issue caused by the more stringent compiler is the
narrowing of the embedded python, which used to be a char array,
and is now unsigned char since there were values larger than 128.

3) a particularly odd issue that arose with the new c++0x behaviour is
found in range.hh, where the operator< causes gcc to complain about
the template type parsing (the "<" is interpreted as the beginning
of a template argument), and the problem seems to be related to the
begin/end members introduced for the range-type iteration, which is
a new feature in c++11.

As a minor update, this patch also fixes the build flags for the clang
debug target that used to be shared with gcc and incorrectly use
"-ggdb".

8925:97f06a79b6f5 31-Mar-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Fix address size handling so real mode works properly.

Virtual (pre-segmentation) addresses are truncated based on address size, and
any non-64 bit linear address is truncated to 32 bits. This means that real
mode addresses aren't truncated down to 16 bits after their segment bases are
added in.

8902:75b524b64c28 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

gcc: Clean-up of non-C++0x compliant code, first steps

This patch cleans up a number of minor issues aiming to get closer to
compliance with the C++0x standard as interpreted by gcc and clang
(compile with std=c++0x and -pedantic-errors). In particular, the
patch cleans up enums where the last item was succeded by a comma,
namespaces closed by a curcly brace followed by a semi-colon, and the
use of the GNU-extension typeof (replaced by templated functions). It
does not address variable-length arrays, zero-size arrays, anonymous
structs, range expressions in switch statements, and the use of long
long. The generated CPU code also has a large number of issues that
remain to be fixed, mainly related to overflows in implicit constant
conversion (due to shifts).


/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/isa_traits.hh
/gem5/src/arch/alpha/types.hh
/gem5/src/arch/arm/intregs.hh
/gem5/src/arch/arm/isa/templates/neon.isa
/gem5/src/arch/arm/linux/atag.hh
/gem5/src/arch/arm/miscregs.cc
/gem5/src/arch/arm/miscregs.hh
/gem5/src/arch/arm/nativetrace.cc
/gem5/src/arch/arm/pagetable.hh
/gem5/src/arch/arm/predecoder.hh
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/arm/vtophys.hh
/gem5/src/arch/x86/bios/e820.hh
/gem5/src/arch/x86/emulenv.hh
/gem5/src/arch/x86/faults.hh
macroop.isa
/gem5/src/arch/x86/isa_traits.hh
/gem5/src/arch/x86/locked_mem.hh
/gem5/src/arch/x86/mmapped_ipr.hh
/gem5/src/arch/x86/nativetrace.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/regs/float.hh
/gem5/src/arch/x86/regs/int.hh
/gem5/src/arch/x86/regs/misc.hh
/gem5/src/arch/x86/regs/segment.hh
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.hh
/gem5/src/arch/x86/vtophys.hh
/gem5/src/base/bitmap.cc
/gem5/src/base/callback.cc
/gem5/src/base/range.cc
/gem5/src/base/range_map.hh
/gem5/src/base/str.cc
/gem5/src/base/vnc/convert.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/pipeline_traits.hh
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_atareg.h
/gem5/src/dev/sinicreg.hh
/gem5/src/python/m5/params.py
/gem5/src/sim/byteswap.hh
/gem5/src/sim/eventq.hh
/gem5/src/sim/serialize.hh
8901:bba76d164f9e 19-Mar-2012 Andreas Hansson <andreas.hansson@arm.com>

clang: Fix recently introduced clang compilation errors

This patch makes the code compile with clang 2.9 and 3.0 again by
making two very minor changes. Firt, it maintains a strict typing in
the forward declaration of the BaseCPUParams. Second, it adds a
FullSystemInt flag of the type unsigned int next to the boolean
FullSystem flag. The FullSystemInt variable can be used in
decode-statements (expands to switch statements) in the instruction
decoder.

8857:120adc5a4345 26-Feb-2012 Gabe Black <gblack@eecs.umich.edu>

X86: Use the M5PanicFault fault in execute methods instead of calling panic.

If an instruction is executed speculatively and hits a situation where it
wants to panic, it should return a fault instead. If the instruction was
misspeculated, the fault can be thrown away. If the instruction wasn't
misspeculated, the fault will be invoked and the panic will still happen.

8738:66bf413b0d5b 30-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

SE/FS: Use the new FullSystem constant where possible.

8672:2c7ece076c8b 09-Jan-2012 Nilay Vaish <nilay@cs.wisc.edu>

X86: Add memory fence to I/O instructions

8626:19eed0015983 01-Dec-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bad segmentation check for the stack segment.

8610:9bdd52a2214c 03-Nov-2011 Nilay Vaish<nilay@cs.wisc.edu>

x86: Add microop for fence
This patch adds a new microop for memory barrier. The microop itself does
nothing, but since it is marked as a memory barrier, the O3 CPU should flush
all the pending loads and stores before the fence to the memory system.

8607:5fb918115c07 31-Oct-2011 Gabe Black <gblack@eecs.umich.edu>

GCC: Get everything working with gcc 4.6.1.

And by "everything" I mean all the quick regressions.

8588:ef28ed90449d 27-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Use '_' instead of '.' to delimit type modifiers on operands.

By using an underscore, the "." is still available and can unambiguously be
used to refer to members of a structure if an operand is a structure, class,
etc. This change mostly just replaces the appropriate "."s with "_"s, but
there were also a few places where the ISA descriptions where handling the
extensions themselves and had their own regular expressions to update. The
regular expressions in the isa parser were updated as well. It also now
looks for one of the defined type extensions specifically after connecting "_"
where before it would look for any sequence of characters after a "."
following an operand name and try to use it as the extension. This helps to
disambiguate cases where a "_" may legitimately be part of an operand name but
not separate the name from the type suffix.

Because leaving the "_" and suffix on the variable name still leaves a valid
C++ identifier and all extensions need to be consistent in a given context, I
considered leaving them on as a breadcrumb that would show what the intended
type was for that operand. Unfortunately the operands can be referred to in
code templates, the Mem operand in particular, and since the exact type of Mem
can be different for different uses of the same template, that broke things.

8558:a2f497ff53e4 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Don't use "#if FULL_SYSTEM" in the X86 ISA description.

The decoder now checks the value of FULL_SYSTEM in a switch statement to
decide whether to return a real syscall instruction or one that triggers
syscall emulation (or a panic in FS mode). The switch statement should devolve
into an if, and also should be optimized out since it's based on constant
input.

8556:2afd82e84d95 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

PseudoInst: Remove the now unnecessary #if FULL_SYSTEMs around pseudoinsts.

8555:6fd8d0432d8d 19-Sep-2011 Gabe Black <gblack@eecs.umich.edu>

Pseudoinst: Add an initParam pseudo inst function.

8500:5bae9eee9482 14-Aug-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Use IsSquashAfter if an instruction could affect fetch translation.

Control register operands are set up so that writing to them is serialize
after, serialize before, and non-speculative. These are probably overboard,
but they should usually be safe. Unfortunately there are times when even these
aren't enough. If an instruction modifies state that affects fetch, later
serialized instructions which come after it might have already gone through
fetch and decode by the time it commits. These instructions may have been
translated incorrectly or interpretted incorrectly and need to be destroyed.
This change modifies instructions which will or may have this behavior so that
they use the IsSquashAfter flag when necessary.

8449:4be49ad47c74 05-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA parser: Define operand types with a ctype directly.

8442:b1f3dfae06f1 03-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

ISA: Use readBytes/writeBytes for all instruction level memory operations.

8440:e513600a3551 03-Jul-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix store microops so they don't drop faults in timing mode.

If a fault was returned by the CPU when a store initiated it's write, the
store instruction would ignore the fault. This change fixes that.

8432:4a0c9c9409e4 21-Jun-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Eliminate an unused argument for building store microops.

8332:23711432221f 02-Jun-2011 Nathan Binkert <nate@binkert.org>

copyright: clean up copyright blocks


/gem5/src/arch/alpha/kgdb.h
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/arm/remote_gdb.cc
/gem5/src/arch/generic/debugfaults.hh
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/x86/insts/badmicroop.cc
/gem5/src/arch/x86/insts/badmicroop.hh
formats/nop.isa
/gem5/src/base/random_mt.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/dev/ide_wdcreg.h
/gem5/src/dev/sparc/dtod.hh
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.hh
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.hh
/gem5/src/mem/ruby/network/orion/Buffer/AmpUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/AmpUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/BitlineUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/BitlineUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.cc
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.hh
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/MemUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/MemUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/Register.cc
/gem5/src/mem/ruby/network/orion/Buffer/Register.hh
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.hh
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.hh
/gem5/src/mem/ruby/network/orion/Clock.cc
/gem5/src/mem/ruby/network/orion/Clock.hh
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.hh
/gem5/src/mem/ruby/network/orion/FlipFlop.cc
/gem5/src/mem/ruby/network/orion/FlipFlop.hh
/gem5/src/mem/ruby/network/orion/OrionLink.cc
/gem5/src/mem/ruby/network/orion/OrionLink.hh
/gem5/src/mem/ruby/network/orion/OrionRouter.cc
/gem5/src/mem/ruby/network/orion/OrionRouter.hh
/gem5/src/mem/ruby/network/orion/TechParameter.cc
/gem5/src/mem/ruby/network/orion/TechParameter.hh
/gem5/src/mem/ruby/network/orion/Type.hh
/gem5/src/mem/ruby/network/orion/Wire.cc
/gem5/src/mem/ruby/network/orion/Wire.hh
/gem5/src/sim/fault_fwd.hh
/gem5/src/sim/root.cc
/gem5/src/sim/root.hh
/gem5/src/unittest/unittest.cc
/gem5/src/unittest/unittest.hh
8290:3c628a51f6e1 06-May-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the Lldt instructions so they load the ldtr and not the tr.

8250:de679a068dd8 23-Apr-2011 Gabe Black <gblack@eecs.umich.edu>

X86: When decoding a memory only inst, fault on reg encodings, don't assert.

This change makes the decoder figure out if an instruction that only supports
memory is using a register encoding and decodes directly to "Unknown" which will
behave appropriately. This prevents other parts of the instruction creation
process from seeing the mismatch and asserting.

8232:b28d06a175be 15-Apr-2011 Nathan Binkert <nate@binkert.org>

trace: reimplement the DTRACE function so it doesn't use a vector
At the same time, rename the trace flags to debug flags since they
have broader usage than simply tracing. This means that
--trace-flags is now --debug-flags and --trace-help is now --debug-help


/gem5/src/SConscript
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/kernel_stats.cc
/gem5/src/arch/alpha/linux/process.cc
/gem5/src/arch/alpha/linux/system.cc
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/stacktrace.hh
/gem5/src/arch/alpha/system.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/vtophys.cc
/gem5/src/arch/arm/faults.cc
/gem5/src/arch/arm/isa.cc
/gem5/src/arch/arm/isa.hh
/gem5/src/arch/arm/isa/includes.isa
/gem5/src/arch/arm/nativetrace.cc
/gem5/src/arch/arm/predecoder.cc
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/remote_gdb.cc
/gem5/src/arch/arm/stacktrace.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/types.hh
/gem5/src/arch/mips/faults.cc
/gem5/src/arch/mips/isa.cc
/gem5/src/arch/mips/isa/includes.isa
/gem5/src/arch/mips/linux/process.cc
/gem5/src/arch/mips/locked_mem.hh
/gem5/src/arch/mips/process.cc
/gem5/src/arch/mips/stacktrace.hh
/gem5/src/arch/mips/tlb.cc
/gem5/src/arch/power/process.cc
/gem5/src/arch/power/stacktrace.hh
/gem5/src/arch/power/tlb.cc
/gem5/src/arch/sparc/interrupts.hh
/gem5/src/arch/sparc/isa.cc
/gem5/src/arch/sparc/isa/includes.isa
/gem5/src/arch/sparc/process.cc
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/stacktrace.hh
/gem5/src/arch/sparc/tlb.cc
/gem5/src/arch/sparc/ua2005.cc
/gem5/src/arch/sparc/vtophys.cc
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/microregop.cc
/gem5/src/arch/x86/insts/static_inst.hh
/gem5/src/arch/x86/interrupts.cc
includes.isa
/gem5/src/arch/x86/nativetrace.cc
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/predecoder.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/stacktrace.hh
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/vtophys.cc
/gem5/src/base/debug.cc
/gem5/src/base/debug.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/raw_object.cc
/gem5/src/base/mysql.cc
/gem5/src/base/remote_gdb.cc
/gem5/src/base/trace.cc
/gem5/src/base/trace.hh
/gem5/src/base/vnc/vncserver.cc
/gem5/src/cpu/SConscript
/gem5/src/cpu/activity.cc
/gem5/src/cpu/base.cc
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_sked.cc
/gem5/src/cpu/inorder/resources/agen_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/decode_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/graduation_unit.cc
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rename_map.cc
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/scoreboard.cc
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/store_set.cc
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/2bit_local.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.cc
/gem5/src/cpu/testers/directedtest/SeriesRequestGenerator.cc
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/rubytest/Check.cc
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.cc
/gem5/src/cpu/thread_context.cc
/gem5/src/dev/alpha/backdoor.cc
/gem5/src/dev/alpha/tsunami_cchip.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/copy_engine.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/etherbus.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/ethertap.cc
/gem5/src/dev/i8254xGBe.cc
/gem5/src/dev/i8254xGBe.hh
/gem5/src/dev/ide_ctrl.cc
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/intel_8254_timer.cc
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/isa_fake.cc
/gem5/src/dev/mc146818.cc
/gem5/src/dev/ns_gige.cc
/gem5/src/dev/pciconfigall.cc
/gem5/src/dev/pcidev.cc
/gem5/src/dev/simple_disk.cc
/gem5/src/dev/sinic.cc
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/terminal.cc
/gem5/src/dev/uart8250.cc
/gem5/src/dev/x86/cmos.cc
/gem5/src/dev/x86/i8042.cc
/gem5/src/dev/x86/i82094aa.cc
/gem5/src/dev/x86/i8254.cc
/gem5/src/dev/x86/i8259.cc
/gem5/src/dev/x86/speaker.cc
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/linux.cc
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.cc
/gem5/src/mem/bus.cc
/gem5/src/mem/cache/base.cc
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr.cc
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/ghb.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/port.cc
/gem5/src/mem/ruby/buffers/MessageBuffer.cc
/gem5/src/mem/ruby/common/NetDest.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc
/gem5/src/mem/ruby/network/simple/PerfectSwitch.cc
/gem5/src/mem/ruby/network/simple/Throttle.cc
/gem5/src/mem/ruby/network/simple/Topology.cc
/gem5/src/mem/ruby/system/CacheMemory.cc
/gem5/src/mem/ruby/system/DMASequencer.cc
/gem5/src/mem/ruby/system/DirectoryMemory.cc
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/SparseMemory.cc
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/tport.cc
/gem5/src/python/m5/debug.py
/gem5/src/python/m5/main.py
/gem5/src/python/m5/trace.py
/gem5/src/python/swig/debug.i
/gem5/src/python/swig/trace.i
/gem5/src/sim/eventq.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/root.cc
/gem5/src/sim/sim_object.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
8229:78bf55f23338 15-Apr-2011 Nathan Binkert <nate@binkert.org>

includes: sort all includes


/gem5/src/arch/alpha/faults.cc
/gem5/src/arch/alpha/isa.hh
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/linux/system.cc
/gem5/src/arch/alpha/mt.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/remote_gdb.hh
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tru64/process.cc
/gem5/src/arch/alpha/types.hh
/gem5/src/arch/alpha/utility.hh
/gem5/src/arch/arm/faults.cc
/gem5/src/arch/arm/faults.hh
/gem5/src/arch/arm/insts/macromem.cc
/gem5/src/arch/arm/insts/static_inst.cc
/gem5/src/arch/arm/insts/vfp.hh
/gem5/src/arch/arm/intregs.hh
/gem5/src/arch/arm/isa/includes.isa
/gem5/src/arch/arm/linux/atag.hh
/gem5/src/arch/arm/linux/linux.cc
/gem5/src/arch/arm/linux/process.cc
/gem5/src/arch/arm/linux/process.hh
/gem5/src/arch/arm/linux/system.cc
/gem5/src/arch/arm/locked_mem.hh
/gem5/src/arch/arm/pagetable.hh
/gem5/src/arch/arm/predecoder.hh
/gem5/src/arch/arm/process.hh
/gem5/src/arch/arm/registers.hh
/gem5/src/arch/arm/remote_gdb.cc
/gem5/src/arch/arm/system.cc
/gem5/src/arch/arm/system.hh
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/table_walker.hh
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/arm/vtophys.hh
/gem5/src/arch/generic/debugfaults.hh
/gem5/src/arch/generic/types.hh
/gem5/src/arch/mips/dsp.cc
/gem5/src/arch/mips/dsp.hh
/gem5/src/arch/mips/isa.cc
/gem5/src/arch/mips/isa.hh
/gem5/src/arch/mips/isa/includes.isa
/gem5/src/arch/mips/isa_traits.hh
/gem5/src/arch/mips/linux/linux.cc
/gem5/src/arch/mips/linux/process.cc
/gem5/src/arch/mips/linux/process.hh
/gem5/src/arch/mips/linux/system.cc
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/process.cc
/gem5/src/arch/mips/process.hh
/gem5/src/arch/mips/system.cc
/gem5/src/arch/mips/system.hh
/gem5/src/arch/mips/tlb.cc
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/mips/utility.cc
/gem5/src/arch/mips/utility.hh
/gem5/src/arch/mips/vtophys.hh
/gem5/src/arch/power/insts/floating.hh
/gem5/src/arch/power/insts/integer.hh
/gem5/src/arch/power/isa/includes.isa
/gem5/src/arch/power/linux/linux.cc
/gem5/src/arch/power/linux/process.cc
/gem5/src/arch/power/linux/process.hh
/gem5/src/arch/power/process.hh
/gem5/src/arch/power/tlb.hh
/gem5/src/arch/power/vtophys.hh
/gem5/src/arch/sparc/isa.hh
/gem5/src/arch/sparc/isa/includes.isa
/gem5/src/arch/sparc/isa_traits.hh
/gem5/src/arch/sparc/linux/linux.cc
/gem5/src/arch/sparc/linux/process.cc
/gem5/src/arch/sparc/locked_mem.hh
/gem5/src/arch/sparc/mmapped_ipr.hh
/gem5/src/arch/sparc/nativetrace.cc
/gem5/src/arch/sparc/process.cc
/gem5/src/arch/sparc/process.hh
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/remote_gdb.hh
/gem5/src/arch/sparc/solaris/process.cc
/gem5/src/arch/sparc/solaris/solaris.cc
/gem5/src/arch/sparc/system.cc
/gem5/src/arch/sparc/tlb.cc
/gem5/src/arch/sparc/tlb_map.hh
/gem5/src/arch/sparc/types.hh
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/sparc/vtophys.cc
/gem5/src/arch/x86/bios/acpi.cc
/gem5/src/arch/x86/bios/intelmp.hh
/gem5/src/arch/x86/emulenv.hh
/gem5/src/arch/x86/faults.hh
/gem5/src/arch/x86/insts/badmicroop.cc
/gem5/src/arch/x86/insts/macroop.hh
/gem5/src/arch/x86/insts/microfpop.cc
/gem5/src/arch/x86/insts/microldstop.cc
/gem5/src/arch/x86/insts/micromediaop.cc
/gem5/src/arch/x86/interrupts.cc
/gem5/src/arch/x86/interrupts.hh
/gem5/src/arch/x86/isa.hh
includes.isa
/gem5/src/arch/x86/linux/linux.cc
/gem5/src/arch/x86/linux/process.cc
/gem5/src/arch/x86/linux/process.hh
/gem5/src/arch/x86/linux/syscalls.cc
/gem5/src/arch/x86/linux/system.cc
/gem5/src/arch/x86/linux/system.hh
/gem5/src/arch/x86/microcode_rom.hh
/gem5/src/arch/x86/nativetrace.cc
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/pagetable_walker.hh
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/arch/x86/registers.hh
/gem5/src/arch/x86/remote_gdb.cc
/gem5/src/arch/x86/system.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/base/cp_annotate.cc
/gem5/src/base/cp_annotate.hh
/gem5/src/base/cprintf.hh
/gem5/src/base/debug.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/fenv.c
/gem5/src/base/hostinfo.cc
/gem5/src/base/inet.hh
/gem5/src/base/inifile.cc
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/elf_object.hh
/gem5/src/base/loader/hex_file.cc
/gem5/src/base/loader/object_file.cc
/gem5/src/base/loader/symtab.cc
/gem5/src/base/misc.cc
/gem5/src/base/mysql.hh
/gem5/src/base/output.cc
/gem5/src/base/pollevent.cc
/gem5/src/base/pollevent.hh
/gem5/src/base/range_map.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/remote_gdb.hh
/gem5/src/base/socket.cc
/gem5/src/base/statistics.cc
/gem5/src/base/statistics.hh
/gem5/src/base/stats/info.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/stats/output.cc
/gem5/src/base/stats/text.cc
/gem5/src/base/stats/text.hh
/gem5/src/base/str.hh
/gem5/src/base/time.hh
/gem5/src/base/trace.cc
/gem5/src/base/vnc/convert.cc
/gem5/src/base/vnc/vncserver.cc
/gem5/src/base/vnc/vncserver.hh
/gem5/src/cpu/activity.cc
/gem5/src/cpu/activity.hh
/gem5/src/cpu/base.cc
/gem5/src/cpu/base.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.cc
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/cpuevent.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/func_unit.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/first_stage.hh
/gem5/src/cpu/inorder/inorder_cpu_builder.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/pipeline_traits.5stage.cc
/gem5/src/cpu/inorder/pipeline_traits.5stage.hh
/gem5/src/cpu/inorder/pipeline_traits.9stage.cc
/gem5/src/cpu/inorder/pipeline_traits.9stage.hh
/gem5/src/cpu/inorder/pipeline_traits.9stage.smt2.cc
/gem5/src/cpu/inorder/pipeline_traits.9stage.smt2.hh
/gem5/src/cpu/inorder/pipeline_traits.hh
/gem5/src/cpu/inorder/reg_dep_map.cc
/gem5/src/cpu/inorder/resource.cc
/gem5/src/cpu/inorder/resource.hh
/gem5/src/cpu/inorder/resource_pool.9stage.cc
/gem5/src/cpu/inorder/resource_pool.cc
/gem5/src/cpu/inorder/resource_pool.hh
/gem5/src/cpu/inorder/resource_sked.cc
/gem5/src/cpu/inorder/resource_sked.hh
/gem5/src/cpu/inorder/resources/agen_unit.hh
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.hh
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/cache_unit.hh
/gem5/src/cpu/inorder/resources/decode_unit.hh
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.hh
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/fetch_unit.cc
/gem5/src/cpu/inorder/resources/fetch_unit.hh
/gem5/src/cpu/inorder/resources/graduation_unit.hh
/gem5/src/cpu/inorder/resources/inst_buffer.cc
/gem5/src/cpu/inorder/resources/inst_buffer.hh
/gem5/src/cpu/inorder/resources/mem_dep_unit.hh
/gem5/src/cpu/inorder/resources/mult_div_unit.cc
/gem5/src/cpu/inorder/resources/mult_div_unit.hh
/gem5/src/cpu/inorder/resources/resource_list.hh
/gem5/src/cpu/inorder/resources/tlb_unit.cc
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/resources/use_def.cc
/gem5/src/cpu/inorder/resources/use_def.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.cc
/gem5/src/cpu/intr_control.cc
/gem5/src/cpu/intr_control.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/base_dyn_inst.cc
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/checker_builder.cc
/gem5/src/cpu/o3/commit.cc
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/cpu_policy.hh
/gem5/src/cpu/o3/decode.cc
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/fetch.cc
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/free_list.cc
/gem5/src/cpu/o3/fu_pool.hh
/gem5/src/cpu/o3/iew.cc
/gem5/src/cpu/o3/iew.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/impl.hh
/gem5/src/cpu/o3/inst_queue.cc
/gem5/src/cpu/o3/inst_queue.hh
/gem5/src/cpu/o3/isa_specific.hh
/gem5/src/cpu/o3/lsq.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit.cc
/gem5/src/cpu/o3/rename.hh
/gem5/src/cpu/o3/scoreboard.hh
/gem5/src/cpu/o3/thread_context.cc
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/back_end_impl.hh
/gem5/src/cpu/ozone/base_dyn_inst.cc
/gem5/src/cpu/ozone/checker_builder.cc
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/ozone/cpu_builder.cc
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/dyn_inst.hh
/gem5/src/cpu/ozone/dyn_inst_impl.hh
/gem5/src/cpu/ozone/ea_list.cc
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/front_end_impl.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/inorder_back_end_impl.hh
/gem5/src/cpu/ozone/inst_queue.cc
/gem5/src/cpu/ozone/inst_queue.hh
/gem5/src/cpu/ozone/inst_queue_impl.hh
/gem5/src/cpu/ozone/lsq_unit.cc
/gem5/src/cpu/ozone/lsq_unit.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/ozone/lw_lsq.cc
/gem5/src/cpu/ozone/lw_lsq.hh
/gem5/src/cpu/ozone/lw_lsq_impl.hh
/gem5/src/cpu/ozone/ozone_base_dyn_inst.cc
/gem5/src/cpu/ozone/ozone_impl.hh
/gem5/src/cpu/ozone/rename_table.cc
/gem5/src/cpu/ozone/simple_base_dyn_inst.cc
/gem5/src/cpu/ozone/simple_cpu_builder.cc
/gem5/src/cpu/ozone/simple_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/profile.cc
/gem5/src/cpu/profile.hh
/gem5/src/cpu/quiesce_event.cc
/gem5/src/cpu/sched_list.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple/timing.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.cc
/gem5/src/cpu/testers/directedtest/InvalidateGenerator.hh
/gem5/src/cpu/testers/directedtest/RubyDirectedTester.hh
/gem5/src/cpu/testers/memtest/memtest.cc
/gem5/src/cpu/testers/memtest/memtest.hh
/gem5/src/cpu/testers/networktest/networktest.cc
/gem5/src/cpu/testers/networktest/networktest.hh
/gem5/src/cpu/testers/rubytest/CheckTable.cc
/gem5/src/cpu/testers/rubytest/RubyTester.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/cpu/thread_state.hh
/gem5/src/cpu/trace/opt_cpu.cc
/gem5/src/cpu/trace/reader/ibm_reader.hh
/gem5/src/cpu/trace/reader/itx_reader.hh
/gem5/src/cpu/trace/reader/mem_trace_reader.hh
/gem5/src/cpu/trace/trace_cpu.cc
/gem5/src/dev/alpha/tsunami.cc
/gem5/src/dev/alpha/tsunami_io.cc
/gem5/src/dev/alpha/tsunami_io.hh
/gem5/src/dev/alpha/tsunami_pchip.cc
/gem5/src/dev/arm/amba_device.cc
/gem5/src/dev/arm/amba_device.hh
/gem5/src/dev/arm/kmi.cc
/gem5/src/dev/arm/kmi.hh
/gem5/src/dev/arm/pl111.cc
/gem5/src/dev/disk_image.cc
/gem5/src/dev/disk_image.hh
/gem5/src/dev/etherbus.hh
/gem5/src/dev/etherdump.hh
/gem5/src/dev/etherint.cc
/gem5/src/dev/etherlink.cc
/gem5/src/dev/etherlink.hh
/gem5/src/dev/ethertap.cc
/gem5/src/dev/ethertap.hh
/gem5/src/dev/ide_ctrl.hh
/gem5/src/dev/ide_disk.cc
/gem5/src/dev/ide_disk.hh
/gem5/src/dev/intel_8254_timer.hh
/gem5/src/dev/io_device.cc
/gem5/src/dev/isa_fake.hh
/gem5/src/dev/mc146818.cc
/gem5/src/dev/mips/malta.cc
/gem5/src/dev/mips/malta_cchip.hh
/gem5/src/dev/mips/malta_io.cc
/gem5/src/dev/mips/malta_pchip.cc
/gem5/src/dev/mips/malta_pchip.hh
/gem5/src/dev/pciconfigall.hh
/gem5/src/dev/platform.hh
/gem5/src/dev/ps2.cc
/gem5/src/dev/simple_disk.hh
/gem5/src/dev/sparc/iob.cc
/gem5/src/dev/sparc/iob.hh
/gem5/src/dev/sparc/mm_disk.cc
/gem5/src/dev/sparc/mm_disk.hh
/gem5/src/dev/terminal.cc
/gem5/src/dev/terminal.hh
/gem5/src/dev/x86/i8042.hh
/gem5/src/dev/x86/i82094aa.hh
/gem5/src/dev/x86/i8259.hh
/gem5/src/dev/x86/intdev.hh
/gem5/src/dev/x86/pc.cc
/gem5/src/dev/x86/south_bridge.hh
/gem5/src/kern/kernel_stats.cc
/gem5/src/kern/kernel_stats.hh
/gem5/src/kern/linux/events.cc
/gem5/src/kern/linux/printk.cc
/gem5/src/kern/operatingsystem.cc
/gem5/src/kern/tru64/dump_mbuf.cc
/gem5/src/kern/tru64/printf.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_events.cc
/gem5/src/mem/bridge.hh
/gem5/src/mem/bus.hh
/gem5/src/mem/cache/base.hh
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/cache.hh
/gem5/src/mem/cache/cache_impl.hh
/gem5/src/mem/cache/mshr_queue.hh
/gem5/src/mem/cache/prefetch/base.cc
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/base.cc
/gem5/src/mem/cache/tags/base.hh
/gem5/src/mem/cache/tags/cacheset.hh
/gem5/src/mem/cache/tags/fa_lru.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/iic.hh
/gem5/src/mem/cache/tags/iic_repl/gen.cc
/gem5/src/mem/cache/tags/iic_repl/repl.hh
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/packet.cc
/gem5/src/mem/packet.hh
/gem5/src/mem/page_table.cc
/gem5/src/mem/physical.cc
/gem5/src/mem/ruby/buffers/MessageBuffer.hh
/gem5/src/mem/ruby/common/NetDest.cc
/gem5/src/mem/ruby/common/Set.hh
/gem5/src/mem/ruby/filters/GenericBloomFilter.hh
/gem5/src/mem/ruby/network/Network.cc
/gem5/src/mem/ruby/network/garnet/BaseGarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/GarnetNetwork_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/InputUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkInterface_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/NetworkLink_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutVcState_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/OutputUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Router_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/RoutingUnit_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/SWallocator_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/Switch_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.cc
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VCallocator_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/VirtualChannel_d.hh
/gem5/src/mem/ruby/network/garnet/fixed-pipeline/flitBuffer_d.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/FlexibleConsumer.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/GarnetNetwork.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkInterface.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/NetworkLink.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/Router.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.cc
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/VCarbiter.hh
/gem5/src/mem/ruby/network/garnet/flexible-pipeline/flitBuffer.hh
/gem5/src/mem/ruby/network/orion/Allocator/Arbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/MatrixArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.cc
/gem5/src/mem/ruby/network/orion/Allocator/RRArbiter.hh
/gem5/src/mem/ruby/network/orion/Allocator/SWAllocator.cc
/gem5/src/mem/ruby/network/orion/Allocator/VCAllocator.cc
/gem5/src/mem/ruby/network/orion/Buffer/Buffer.cc
/gem5/src/mem/ruby/network/orion/Buffer/DecoderUnit.hh
/gem5/src/mem/ruby/network/orion/Buffer/OutdrvUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/PrechargeUnit.cc
/gem5/src/mem/ruby/network/orion/Buffer/Register.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.cc
/gem5/src/mem/ruby/network/orion/Buffer/SRAM.hh
/gem5/src/mem/ruby/network/orion/Buffer/WordlineUnit.cc
/gem5/src/mem/ruby/network/orion/Clock.cc
/gem5/src/mem/ruby/network/orion/ConfigFile.hh
/gem5/src/mem/ruby/network/orion/Crossbar/Crossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MatrixCrossbar.hh
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.cc
/gem5/src/mem/ruby/network/orion/Crossbar/MultreeCrossbar.hh
/gem5/src/mem/ruby/network/orion/FlipFlop.cc
/gem5/src/mem/ruby/network/orion/NetworkPower.cc
/gem5/src/mem/ruby/network/orion/NetworkPower.hh
/gem5/src/mem/ruby/network/orion/OrionConfig.cc
/gem5/src/mem/ruby/network/orion/OrionConfig.hh
/gem5/src/mem/ruby/network/orion/OrionLink.cc
/gem5/src/mem/ruby/network/orion/OrionRouter.cc
/gem5/src/mem/ruby/network/orion/TechParameter.cc
/gem5/src/mem/ruby/network/orion/Wire.cc
/gem5/src/mem/ruby/network/orion/orion.hh
/gem5/src/mem/ruby/network/simple/PerfectSwitch.hh
/gem5/src/mem/ruby/network/simple/Switch.cc
/gem5/src/mem/ruby/network/simple/Throttle.cc
/gem5/src/mem/ruby/network/simple/Throttle.hh
/gem5/src/mem/ruby/network/simple/Topology.cc
/gem5/src/mem/ruby/profiler/CacheProfiler.hh
/gem5/src/mem/ruby/profiler/Profiler.cc
/gem5/src/mem/ruby/profiler/Profiler.hh
/gem5/src/mem/ruby/recorder/CacheRecorder.cc
/gem5/src/mem/ruby/recorder/CacheRecorder.hh
/gem5/src/mem/ruby/recorder/Tracer.hh
/gem5/src/mem/ruby/slicc_interface/AbstractEntry.hh
/gem5/src/mem/ruby/slicc_interface/RubyRequest.hh
/gem5/src/mem/ruby/slicc_interface/RubySlicc_ComponentMapping.cc
/gem5/src/mem/ruby/slicc_interface/RubySlicc_includes.hh
/gem5/src/mem/ruby/system/CacheMemory.hh
/gem5/src/mem/ruby/system/RubyPort.cc
/gem5/src/mem/ruby/system/RubyPort.hh
/gem5/src/mem/ruby/system/Sequencer.cc
/gem5/src/mem/ruby/system/Sequencer.hh
/gem5/src/mem/ruby/system/WireBuffer.hh
/gem5/src/mem/slicc/symbols/StateMachine.py
/gem5/src/mem/tport.hh
/gem5/src/mem/translating_port.cc
/gem5/src/mem/vport.hh
/gem5/src/python/swig/core.i
/gem5/src/python/swig/event.i
/gem5/src/python/swig/inet.i
/gem5/src/python/swig/pyobject.cc
/gem5/src/python/swig/sim_object.i
/gem5/src/python/swig/stats.i
/gem5/src/python/swig/system.i
/gem5/src/sim/faults.cc
/gem5/src/sim/faults.hh
/gem5/src/sim/init.cc
/gem5/src/sim/process.cc
/gem5/src/sim/process_impl.hh
/gem5/src/sim/pseudo_inst.cc
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/stat_control.cc
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/src/sim/system.cc
/gem5/src/sim/tlb.cc
/gem5/src/sim/vptr.hh
/gem5/src/unittest/cprintftest.cc
/gem5/src/unittest/cprintftime.cc
/gem5/src/unittest/initest.cc
/gem5/src/unittest/rangemaptest.cc
/gem5/src/unittest/stattest.cc
/gem5/src/unittest/symtest.cc
/gem5/util/ccdrv/devtime.c
/gem5/util/m5/m5.c
/gem5/util/statetrace/arch/amd64/tracechild.cc
/gem5/util/statetrace/arch/amd64/tracechild.hh
/gem5/util/statetrace/arch/arm/tracechild.cc
/gem5/util/statetrace/arch/arm/tracechild.hh
/gem5/util/statetrace/arch/i686/tracechild.cc
/gem5/util/statetrace/arch/i686/tracechild.hh
/gem5/util/statetrace/arch/sparc/tracechild.cc
/gem5/util/statetrace/arch/sparc/tracechild.hh
/gem5/util/statetrace/base/regstate.hh
/gem5/util/statetrace/base/statetrace.cc
/gem5/util/statetrace/base/tracechild.cc
/gem5/util/tap/tap.cc
/gem5/util/term/term.c
8106:4a194d4f6fb0 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Decode the mysterious and elusive ffreep x87 instruction.

The internet says this instruction was created by accident when an Intel CPU
failed to decode x87 instructions properly. It's been documented on a few rare
occasions and has generally worked to ensure backwards compatability. One
source claims that the gcc toolchain is basically the only thing that emits
it, and that emulators/binary translators like qemu and bochs implement it.

We won't actually implement it here since we're hardly implementing any other
x87 instructions either. If we were to implement it, it would behave the same
as ffree but then also pop the register stack.

http://www.pagetable.com/?p=16

8103:53c2d9b1c15d 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Mark IO reads and writes as non-speculative.

8102:77ee9ad2e113 02-Mar-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Mark prefetches as such in their instruction and request flags.

7975:4ddb6f13cf13 15-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of "inline" on the MicroPanic constructor in decoder.cc.

This was making certain versions of gcc omit the function from the object file
which would break the build.

7969:068f061e57a8 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Put the result used for flags in an intermediate variable.

Using the destination register directly causes the ISA parser to treat it as a
source even if none of the original bits are used.

7967:b243dc8cec8b 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Don't read in dest regs if all bits are replaced.

In x86, 32 and 64 bit writes to registers in which registers appear to be 32 or
64 bits wide overwrite all bits of the destination register. This change
removes false dependencies in these cases where the previous value of a
register doesn't need to be read to write a new value. New versions of most
microops are created that have a "Big" suffix which simply overwrite their
destination, and the right version to use is selected during microop
allocation based on the selected data size.

This does not change the performance of the O3 CPU model significantly, I
assume because there are other false dependencies from the condition code bits
in the flags register.

7965:f4c89fe1246b 13-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Define fault objects to carry debug messages.

These faults can panic/warn/warn_once, etc., instead of instructions doing
that themselves directly. That way, instructions can be speculatively
executed, and only if they're actually going to commit will their fault be
invoked and the panic, etc., happen.

7932:6220632e8636 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Use all 64 bits of the lstar register in the SYSCALL_64 macroop.

During SYSCALL_64, use dataSize=8 when handling new rip (ref
http://www.intel.com/Assets/PDF/manual/253668.pdf 5.8.8 IA32_LSTAR is a 64-bit
address)

7931:fb0a01641d73 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Fix JMP_FAR_I to unpack a far pointer correctly.

JMP_FAR_I was unpacking its far pointer operand using sll instead of srl like
it should, and also putting the components in the wrong registers for use by
other microcode.

7930:fb13c36c3951 07-Feb-2011 Tim Harris <tharris@microsoft.com>

X86: Read the LDT/GDT at CPL0 when executing an iret.

During iret access LDT/GDT at CPL0 rather than after transition to user mode
(if I'm reading the Intel IA-64 architecture spec correctly, the contents of
the descriptor table are read before the CPL is updated).

7914:eee5bb0fb8ea 07-Feb-2011 Brad Beckmann <Brad.Beckmann@amd.com>

m5: added work completed monitoring support

7894:48d31b577847 07-Feb-2011 Brad Beckmann <Brad.Beckmann@amd.com>

x86: set IsCondControl flag for the appropriate microops

7874:c7f15c60898e 02-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the stupd microop.

7872:b21a94bf6a28 02-Feb-2011 Gabe Black <gblack@eecs.umich.edu>

X86: Replace the stupd microop with a store/update sequence.

7789:f455790bcd47 08-Dec-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Take advantage of new PCState syntax.

7720:65d338a8dba4 31-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

ISA,CPU,etc: Create an ISA defined PC type that abstracts out ISA behaviors.



This change is a low level and pervasive reorganization of how PCs are managed
in M5. Back when Alpha was the only ISA, there were only 2 PCs to worry about,
the PC and the NPC, and the lsb of the PC signaled whether or not you were in
PAL mode. As other ISAs were added, we had to add an NNPC, micro PC and next
micropc, x86 and ARM introduced variable length instruction sets, and ARM
started to keep track of mode bits in the PC. Each CPU model handled PCs in
its own custom way that needed to be updated individually to handle the new
dimensions of variability, or, in the case of ARMs mode-bit-in-the-pc hack,
the complexity could be hidden in the ISA at the ISA implementation's expense.
Areas like the branch predictor hadn't been updated to handle branch delay
slots or micropcs, and it turns out that had introduced a significant (10s of
percent) performance bug in SPARC and to a lesser extend MIPS. Rather than
perpetuate the problem by reworking O3 again to handle the PC features needed
by x86, this change was introduced to rework PC handling in a more modular,
transparent, and hopefully efficient way.


PC type:

Rather than having the superset of all possible elements of PC state declared
in each of the CPU models, each ISA defines its own PCState type which has
exactly the elements it needs. A cross product of canned PCState classes are
defined in the new "generic" ISA directory for ISAs with/without delay slots
and microcode. These are either typedef-ed or subclassed by each ISA. To read
or write this structure through a *Context, you use the new pcState() accessor
which reads or writes depending on whether it has an argument. If you just
want the address of the current or next instruction or the current micro PC,
you can get those through read-only accessors on either the PCState type or
the *Contexts. These are instAddr(), nextInstAddr(), and microPC(). Note the
move away from readPC. That name is ambiguous since it's not clear whether or
not it should be the actual address to fetch from, or if it should have extra
bits in it like the PAL mode bit. Each class is free to define its own
functions to get at whatever values it needs however it needs to to be used in
ISA specific code. Eventually Alpha's PAL mode bit could be moved out of the
PC and into a separate field like ARM.

These types can be reset to a particular pc (where npc = pc +
sizeof(MachInst), nnpc = npc + sizeof(MachInst), upc = 0, nupc = 1 as
appropriate), printed, serialized, and compared. There is a branching()
function which encapsulates code in the CPU models that checked if an
instruction branched or not. Exactly what that means in the context of branch
delay slots which can skip an instruction when not taken is ambiguous, and
ideally this function and its uses can be eliminated. PCStates also generally
know how to advance themselves in various ways depending on if they point at
an instruction, a microop, or the last microop of a macroop. More on that
later.

Ideally, accessing all the PCs at once when setting them will improve
performance of M5 even though more data needs to be moved around. This is
because often all the PCs need to be manipulated together, and by getting them
all at once you avoid multiple function calls. Also, the PCs of a particular
thread will have spatial locality in the cache. Previously they were grouped
by element in arrays which spread out accesses.


Advancing the PC:

The PCs were previously managed entirely by the CPU which had to know about PC
semantics, try to figure out which dimension to increment the PC in, what to
set NPC/NNPC, etc. These decisions are best left to the ISA in conjunction
with the PC type itself. Because most of the information about how to
increment the PC (mainly what type of instruction it refers to) is contained
in the instruction object, a new advancePC virtual function was added to the
StaticInst class. Subclasses provide an implementation that moves around the
right element of the PC with a minimal amount of decision making. In ISAs like
Alpha, the instructions always simply assign NPC to PC without having to worry
about micropcs, nnpcs, etc. The added cost of a virtual function call should
be outweighed by not having to figure out as much about what to do with the
PCs and mucking around with the extra elements.

One drawback of making the StaticInsts advance the PC is that you have to
actually have one to advance the PC. This would, superficially, seem to
require decoding an instruction before fetch could advance. This is, as far as
I can tell, realistic. fetch would advance through memory addresses, not PCs,
perhaps predicting new memory addresses using existing ones. More
sophisticated decisions about control flow would be made later on, after the
instruction was decoded, and handed back to fetch. If branching needs to
happen, some amount of decoding needs to happen to see that it's a branch,
what the target is, etc. This could get a little more complicated if that gets
done by the predecoder, but I'm choosing to ignore that for now.


Variable length instructions:

To handle variable length instructions in x86 and ARM, the predecoder now
takes in the current PC by reference to the getExtMachInst function. It can
modify the PC however it needs to (by setting NPC to be the PC + instruction
length, for instance). This could be improved since the CPU doesn't know if
the PC was modified and always has to write it back.


ISA parser:

To support the new API, all PC related operand types were removed from the
parser and replaced with a PCState type. There are two warts on this
implementation. First, as with all the other operand types, the PCState still
has to have a valid operand type even though it doesn't use it. Second, using
syntax like PCS.npc(target) doesn't work for two reasons, this looks like the
syntax for operand type overriding, and the parser can't figure out if you're
reading or writing. Instructions that use the PCS operand (which I've
consistently called it) need to first read it into a local variable,
manipulate it, and then write it back out.


Return address stack:

The return address stack needed a little extra help because, in the presence
of branch delay slots, it has to merge together elements of the return PC and
the call PC. To handle that, a buildRetPC utility function was added. There
are basically only two versions in all the ISAs, but it didn't seem short
enough to put into the generic ISA directory. Also, the branch predictor code
in O3 and InOrder were adjusted so that they always store the PC of the actual
call instruction in the RAS, not the next PC. If the call instruction is a
microop, the next PC refers to the next microop in the same macroop which is
probably not desirable. The buildRetPC function advances the PC intelligently
to the next macroop (in an ISA specific way) so that that case works.


Change in stats:

There were no change in stats except in MIPS and SPARC in the O3 model. MIPS
runs in about 9% fewer ticks. SPARC runs with 30%-50% fewer ticks, which could
likely be improved further by setting call/return instruction flags and taking
advantage of the RAS.


TODO:

Add != operators to the PCState classes, defined trivially to be !(a==b).
Smooth out places where PCs are split apart, passed around, and put back
together later. I think this might happen in SPARC's fault code. Add ISA
specific constructors that allow setting PC elements without calling a bunch
of accessors. Try to eliminate the need for the branching() function. Factor
out Alpha's PAL mode pc bit into a separate flag field, and eliminate places
where it's blindly masked out or tested in the PC.


/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/faults.cc
/gem5/src/arch/alpha/interrupts.hh
/gem5/src/arch/alpha/isa/branch.isa
/gem5/src/arch/alpha/isa/decoder.isa
/gem5/src/arch/alpha/isa/main.isa
/gem5/src/arch/alpha/predecoder.hh
/gem5/src/arch/alpha/process.cc
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/stacktrace.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/types.hh
/gem5/src/arch/alpha/utility.cc
/gem5/src/arch/alpha/utility.hh
/gem5/src/arch/arm/faults.cc
/gem5/src/arch/arm/insts/macromem.hh
/gem5/src/arch/arm/insts/mem.hh
/gem5/src/arch/arm/insts/pred_inst.hh
/gem5/src/arch/arm/insts/static_inst.hh
/gem5/src/arch/arm/insts/vfp.hh
/gem5/src/arch/arm/isa.cc
/gem5/src/arch/arm/isa/formats/breakpoint.isa
/gem5/src/arch/arm/isa/insts/branch.isa
/gem5/src/arch/arm/isa/insts/data.isa
/gem5/src/arch/arm/isa/insts/ldr.isa
/gem5/src/arch/arm/isa/insts/macromem.isa
/gem5/src/arch/arm/isa/insts/misc.isa
/gem5/src/arch/arm/isa/operands.isa
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/linux/system.cc
/gem5/src/arch/arm/nativetrace.cc
/gem5/src/arch/arm/predecoder.cc
/gem5/src/arch/arm/predecoder.hh
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/system.hh
/gem5/src/arch/arm/table_walker.cc
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/types.hh
/gem5/src/arch/arm/utility.cc
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/generic/types.hh
/gem5/src/arch/isa_parser.py
/gem5/src/arch/mips/isa/base.isa
/gem5/src/arch/mips/isa/decoder.isa
/gem5/src/arch/mips/isa/formats/branch.isa
/gem5/src/arch/mips/isa/includes.isa
/gem5/src/arch/mips/isa/operands.isa
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/predecoder.hh
/gem5/src/arch/mips/process.cc
/gem5/src/arch/mips/types.hh
/gem5/src/arch/mips/utility.cc
/gem5/src/arch/mips/utility.hh
/gem5/src/arch/power/insts/branch.cc
/gem5/src/arch/power/insts/branch.hh
/gem5/src/arch/power/insts/static_inst.hh
/gem5/src/arch/power/isa/decoder.isa
/gem5/src/arch/power/isa/formats/branch.isa
/gem5/src/arch/power/isa/formats/unknown.isa
/gem5/src/arch/power/isa/operands.isa
/gem5/src/arch/power/predecoder.hh
/gem5/src/arch/power/process.cc
/gem5/src/arch/power/types.hh
/gem5/src/arch/power/utility.cc
/gem5/src/arch/power/utility.hh
/gem5/src/arch/sparc/faults.cc
/gem5/src/arch/sparc/isa/base.isa
/gem5/src/arch/sparc/isa/decoder.isa
/gem5/src/arch/sparc/isa/formats/branch.isa
/gem5/src/arch/sparc/isa/formats/micro.isa
/gem5/src/arch/sparc/isa/operands.isa
/gem5/src/arch/sparc/nativetrace.cc
/gem5/src/arch/sparc/predecoder.hh
/gem5/src/arch/sparc/process.cc
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/types.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/insts/macroop.hh
/gem5/src/arch/x86/insts/microop.hh
/gem5/src/arch/x86/insts/static_inst.hh
decoder/two_byte_opcodes.isa
formats/unknown.isa
microops/regop.isa
microops/seqop.isa
operands.isa
/gem5/src/arch/x86/nativetrace.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/system.cc
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.cc
/gem5/src/arch/x86/utility.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/types.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/base_dyn_inst_impl.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/exetrace.cc
/gem5/src/cpu/exetrace.hh
/gem5/src/cpu/inorder/comm.hh
/gem5/src/cpu/inorder/cpu.cc
/gem5/src/cpu/inorder/cpu.hh
/gem5/src/cpu/inorder/first_stage.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.cc
/gem5/src/cpu/inorder/inorder_dyn_inst.hh
/gem5/src/cpu/inorder/inorder_trace.cc
/gem5/src/cpu/inorder/inorder_trace.hh
/gem5/src/cpu/inorder/pipeline_stage.cc
/gem5/src/cpu/inorder/pipeline_stage.hh
/gem5/src/cpu/inorder/resources/bpred_unit.cc
/gem5/src/cpu/inorder/resources/bpred_unit.hh
/gem5/src/cpu/inorder/resources/branch_predictor.cc
/gem5/src/cpu/inorder/resources/cache_unit.cc
/gem5/src/cpu/inorder/resources/execution_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.cc
/gem5/src/cpu/inorder/resources/fetch_seq_unit.hh
/gem5/src/cpu/inorder/resources/tlb_unit.hh
/gem5/src/cpu/inorder/thread_context.cc
/gem5/src/cpu/inorder/thread_context.hh
/gem5/src/cpu/inorder/thread_state.hh
/gem5/src/cpu/inteltrace.cc
/gem5/src/cpu/inteltrace.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/legiontrace.hh
/gem5/src/cpu/nativetrace.hh
/gem5/src/cpu/o3/bpred_unit.hh
/gem5/src/cpu/o3/bpred_unit_impl.hh
/gem5/src/cpu/o3/comm.hh
/gem5/src/cpu/o3/commit.hh
/gem5/src/cpu/o3/commit_impl.hh
/gem5/src/cpu/o3/cpu.cc
/gem5/src/cpu/o3/cpu.hh
/gem5/src/cpu/o3/decode_impl.hh
/gem5/src/cpu/o3/dep_graph.hh
/gem5/src/cpu/o3/dyn_inst.hh
/gem5/src/cpu/o3/dyn_inst_impl.hh
/gem5/src/cpu/o3/fetch.hh
/gem5/src/cpu/o3/fetch_impl.hh
/gem5/src/cpu/o3/iew_impl.hh
/gem5/src/cpu/o3/inst_queue_impl.hh
/gem5/src/cpu/o3/lsq_unit.hh
/gem5/src/cpu/o3/lsq_unit_impl.hh
/gem5/src/cpu/o3/mem_dep_unit_impl.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/rob_impl.hh
/gem5/src/cpu/o3/thread_context.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/pc_event.cc
/gem5/src/cpu/pred/btb.cc
/gem5/src/cpu/pred/btb.hh
/gem5/src/cpu/pred/ras.cc
/gem5/src/cpu/pred/ras.hh
/gem5/src/cpu/simple/atomic.cc
/gem5/src/cpu/simple/base.cc
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple/timing.cc
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.cc
/gem5/src/cpu/static_inst.hh
/gem5/src/cpu/thread_context.cc
/gem5/src/cpu/thread_context.hh
/gem5/src/kern/system_events.cc
/gem5/src/kern/tru64/tru64.hh
/gem5/src/sim/faults.cc
/gem5/src/sim/insttracer.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
7719:f299139501f7 29-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fault on divide by zero instead of panicing.

7718:6333e66ce74b 29-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make syscalls also serialize after.

7715:5581d0cd2bdb 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make nop a regular, non-microcoded instruction.

Code in the CPUs that need a nop to carry a fault can't easily deal with a
microcoded nop. This instruction format provides for one that isn't.

7713:ce987fa77797 22-Oct-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make syscall instructions non-speculative in SE.

7690:ae58aacfab8f 29-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the RIP relative versions of the BT, BTC, BTR, and BTS instructions.

7682:37c56be05af0 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the halt microop non-speculative.

Executing this microop makes the CPU halt even if it was misspeculated.

7681:61e31534522d 14-Sep-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make unrecognized instructions behave better in x86.

7629:0f0c231e3e97 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Create a directory for files that define register indexes.

This is to help tidy up arch/x86. These files should not be used external to
the ISA.

7626:bdd926760470 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the flagless microop constructor.

This will reduce clutter in the source and hopefully speed up compilation.

7622:b49144029ec8 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Mark serializing macroops and regular instructions as such.

7621:3a6468fa514f 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Add a .serializing directive that makes a macroop serializing.

This directive really just tells the macroop to set IsSerializing and
IsSerializeAfter on its final microop.

7620:3d8a23caa1ef 23-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Consolidate extra microop flags into one parameter.

This single parameter replaces the collection of bools that set up various
flavors of microops. A flag parameter also allows other flags to be set like
the serialize before/after flags, etc., without having to change the
constructor.

7571:405f840c4ae1 22-Aug-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of the unused getAllocator on the python base microop class.

This function is always overridden, and doesn't actually have the right
signature.

7501:a75564db03c3 21-Jul-2010 Tushar Krishna <Tushar.Krishna@amd.com>

Fix x86 XCHG macro-op to use locked micro-ops for all memory accesses

7480:6a854784be4f 25-Jun-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Fix div2 flag calculation.

7087:fb8d5786ff30 24-May-2010 Nathan Binkert <nate@binkert.org>

copyright: Change HP copyright on x86 code to be more friendly


/gem5/src/arch/x86/SConscript
/gem5/src/arch/x86/X86System.py
/gem5/src/arch/x86/X86TLB.py
/gem5/src/arch/x86/arguments.hh
/gem5/src/arch/x86/bios/ACPI.py
/gem5/src/arch/x86/bios/E820.py
/gem5/src/arch/x86/bios/IntelMP.py
/gem5/src/arch/x86/bios/SConscript
/gem5/src/arch/x86/bios/SMBios.py
/gem5/src/arch/x86/bios/acpi.cc
/gem5/src/arch/x86/bios/acpi.hh
/gem5/src/arch/x86/bios/e820.cc
/gem5/src/arch/x86/bios/e820.hh
/gem5/src/arch/x86/bios/intelmp.cc
/gem5/src/arch/x86/bios/intelmp.hh
/gem5/src/arch/x86/bios/smbios.cc
/gem5/src/arch/x86/bios/smbios.hh
/gem5/src/arch/x86/emulenv.cc
/gem5/src/arch/x86/emulenv.hh
/gem5/src/arch/x86/faults.cc
/gem5/src/arch/x86/faults.hh
/gem5/src/arch/x86/floatregs.hh
/gem5/src/arch/x86/insts/macroop.hh
/gem5/src/arch/x86/insts/microfpop.cc
/gem5/src/arch/x86/insts/microfpop.hh
/gem5/src/arch/x86/insts/microldstop.cc
/gem5/src/arch/x86/insts/microldstop.hh
/gem5/src/arch/x86/insts/microop.cc
/gem5/src/arch/x86/insts/microop.hh
/gem5/src/arch/x86/insts/microregop.cc
/gem5/src/arch/x86/insts/microregop.hh
/gem5/src/arch/x86/insts/static_inst.cc
/gem5/src/arch/x86/insts/static_inst.hh
/gem5/src/arch/x86/interrupts.cc
/gem5/src/arch/x86/interrupts.hh
/gem5/src/arch/x86/intregs.hh
bitfields.isa
decoder/decoder.isa
decoder/one_byte_opcodes.isa
decoder/two_byte_opcodes.isa
decoder/x87.isa
formats/basic.isa
formats/cpuid.isa
formats/error.isa
formats/formats.isa
formats/multi.isa
formats/string.isa
formats/syscall.isa
formats/unimp.isa
formats/unknown.isa
includes.isa
insts/__init__.py
insts/general_purpose/__init__.py
insts/general_purpose/arithmetic/__init__.py
insts/general_purpose/arithmetic/add_and_subtract.py
insts/general_purpose/arithmetic/increment_and_decrement.py
insts/general_purpose/arithmetic/multiply_and_divide.py
insts/general_purpose/cache_and_memory_management.py
insts/general_purpose/compare_and_test/__init__.py
insts/general_purpose/compare_and_test/bit_scan.py
insts/general_purpose/compare_and_test/bit_test.py
insts/general_purpose/compare_and_test/bounds.py
insts/general_purpose/compare_and_test/compare.py
insts/general_purpose/compare_and_test/set_byte_on_condition.py
insts/general_purpose/compare_and_test/test.py
insts/general_purpose/control_transfer/__init__.py
insts/general_purpose/control_transfer/call.py
insts/general_purpose/control_transfer/conditional_jump.py
insts/general_purpose/control_transfer/interrupts_and_exceptions.py
insts/general_purpose/control_transfer/jump.py
insts/general_purpose/control_transfer/loop.py
insts/general_purpose/control_transfer/xreturn.py
insts/general_purpose/data_conversion/__init__.py
insts/general_purpose/data_conversion/ascii_adjust.py
insts/general_purpose/data_conversion/bcd_adjust.py
insts/general_purpose/data_conversion/endian_conversion.py
insts/general_purpose/data_conversion/extract_sign_mask.py
insts/general_purpose/data_conversion/sign_extension.py
insts/general_purpose/data_conversion/translate.py
insts/general_purpose/data_transfer/__init__.py
insts/general_purpose/data_transfer/conditional_move.py
insts/general_purpose/data_transfer/move.py
insts/general_purpose/data_transfer/stack_operations.py
insts/general_purpose/data_transfer/xchg.py
insts/general_purpose/flags/__init__.py
insts/general_purpose/flags/load_and_store.py
insts/general_purpose/flags/push_and_pop.py
insts/general_purpose/flags/set_and_clear.py
insts/general_purpose/input_output/__init__.py
insts/general_purpose/input_output/general_io.py
insts/general_purpose/input_output/string_io.py
insts/general_purpose/load_effective_address.py
insts/general_purpose/load_segment_registers.py
insts/general_purpose/logical.py
insts/general_purpose/no_operation.py
insts/general_purpose/rotate_and_shift/__init__.py
insts/general_purpose/rotate_and_shift/rotate.py
insts/general_purpose/rotate_and_shift/shift.py
insts/general_purpose/semaphores.py
insts/general_purpose/string/__init__.py
insts/general_purpose/string/compare_strings.py
insts/general_purpose/string/load_string.py
insts/general_purpose/string/move_string.py
insts/general_purpose/string/scan_string.py
insts/general_purpose/string/store_string.py
insts/general_purpose/system_calls.py
insts/simd128/__init__.py
insts/simd128/floating_point/__init__.py
insts/simd128/floating_point/arithmetic/__init__.py
insts/simd128/floating_point/arithmetic/addition.py
insts/simd128/floating_point/arithmetic/division.py
insts/simd128/floating_point/arithmetic/horizontal_addition.py
insts/simd128/floating_point/arithmetic/horizontal_subtraction.py
insts/simd128/floating_point/arithmetic/multiplication.py
insts/simd128/floating_point/arithmetic/reciprocal_estimation.py
insts/simd128/floating_point/arithmetic/reciprocal_square_root.py
insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
insts/simd128/floating_point/arithmetic/square_root.py
insts/simd128/floating_point/arithmetic/subtraction.py
insts/simd128/floating_point/compare/__init__.py
insts/simd128/floating_point/compare/compare_and_write_mask.py
insts/simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
insts/simd128/floating_point/compare/compare_and_write_rflags.py
insts/simd128/floating_point/data_conversion/__init__.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
insts/simd128/floating_point/data_reordering/__init__.py
insts/simd128/floating_point/data_reordering/shuffle.py
insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
insts/simd128/floating_point/data_transfer/__init__.py
insts/simd128/floating_point/data_transfer/move.py
insts/simd128/floating_point/data_transfer/move_mask.py
insts/simd128/floating_point/data_transfer/move_non_temporal.py
insts/simd128/floating_point/data_transfer/move_with_duplication.py
insts/simd128/floating_point/logical/__init__.py
insts/simd128/floating_point/logical/andp.py
insts/simd128/floating_point/logical/exclusive_or.py
insts/simd128/floating_point/logical/orp.py
insts/simd128/integer/__init__.py
insts/simd128/integer/arithmetic/__init__.py
insts/simd128/integer/arithmetic/addition.py
insts/simd128/integer/arithmetic/average.py
insts/simd128/integer/arithmetic/multiplication.py
insts/simd128/integer/arithmetic/multiply_add.py
insts/simd128/integer/arithmetic/subtraction.py
insts/simd128/integer/arithmetic/sum_of_absolute_differences.py
insts/simd128/integer/compare/__init__.py
insts/simd128/integer/compare/compare_and_write_mask.py
insts/simd128/integer/compare/compare_and_write_minimum_or_maximum.py
insts/simd128/integer/data_conversion/__init__.py
insts/simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
insts/simd128/integer/data_conversion/convert_integer_to_floating_point.py
insts/simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
insts/simd128/integer/data_reordering/__init__.py
insts/simd128/integer/data_reordering/extract_and_insert.py
insts/simd128/integer/data_reordering/pack_with_saturation.py
insts/simd128/integer/data_reordering/shuffle.py
insts/simd128/integer/data_reordering/unpack_and_interleave.py
insts/simd128/integer/data_transfer/__init__.py
insts/simd128/integer/data_transfer/move.py
insts/simd128/integer/data_transfer/move_mask.py
insts/simd128/integer/data_transfer/move_non_temporal.py
insts/simd128/integer/logical/__init__.py
insts/simd128/integer/logical/exclusive_or.py
insts/simd128/integer/logical/pand.py
insts/simd128/integer/logical/por.py
insts/simd128/integer/save_and_restore_state/__init__.py
insts/simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
insts/simd128/integer/save_and_restore_state/save_and_restore_state.py
insts/simd128/integer/shift/__init__.py
insts/simd128/integer/shift/left_logical_shift.py
insts/simd128/integer/shift/right_arithmetic_shift.py
insts/simd128/integer/shift/right_logical_shift.py
insts/simd64/__init__.py
insts/simd64/floating_point/__init__.py
insts/simd64/floating_point/arithmetic/__init__.py
insts/simd64/floating_point/arithmetic/accumulation.py
insts/simd64/floating_point/arithmetic/addition.py
insts/simd64/floating_point/arithmetic/multiplication.py
insts/simd64/floating_point/arithmetic/reciprocal_estimation.py
insts/simd64/floating_point/arithmetic/reciprocal_square_root.py
insts/simd64/floating_point/arithmetic/subtraction.py
insts/simd64/floating_point/compare/__init__.py
insts/simd64/floating_point/compare/compare_and_write_mask.py
insts/simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
insts/simd64/floating_point/data_conversion.py
insts/simd64/integer/__init__.py
insts/simd64/integer/arithmetic/__init__.py
insts/simd64/integer/arithmetic/addition.py
insts/simd64/integer/arithmetic/average.py
insts/simd64/integer/arithmetic/multiplication.py
insts/simd64/integer/arithmetic/multiply_add.py
insts/simd64/integer/arithmetic/subtraction.py
insts/simd64/integer/arithmetic/sum_of_absolute_differences.py
insts/simd64/integer/compare/__init__.py
insts/simd64/integer/compare/compare_and_write_mask.py
insts/simd64/integer/compare/compare_and_write_minimum_or_maximum.py
insts/simd64/integer/data_conversion.py
insts/simd64/integer/data_reordering/__init__.py
insts/simd64/integer/data_reordering/extract_and_insert.py
insts/simd64/integer/data_reordering/pack_with_saturation.py
insts/simd64/integer/data_reordering/shuffle_and_swap.py
insts/simd64/integer/data_reordering/unpack_and_interleave.py
insts/simd64/integer/data_transfer/__init__.py
insts/simd64/integer/data_transfer/move.py
insts/simd64/integer/data_transfer/move_mask.py
insts/simd64/integer/data_transfer/move_non_temporal.py
insts/simd64/integer/exit_media_state.py
insts/simd64/integer/logical/__init__.py
insts/simd64/integer/logical/exclusive_or.py
insts/simd64/integer/logical/pand.py
insts/simd64/integer/logical/por.py
insts/simd64/integer/save_and_restore_state.py
insts/simd64/integer/shift/__init__.py
insts/simd64/integer/shift/left_logical_shift.py
insts/simd64/integer/shift/right_arithmetic_shift.py
insts/simd64/integer/shift/right_logical_shift.py
insts/system/__init__.py
insts/system/halt.py
insts/system/invlpg.py
insts/system/msrs.py
insts/system/segmentation.py
insts/system/undefined_operation.py
insts/x87/__init__.py
insts/x87/arithmetic/__init__.py
insts/x87/arithmetic/addition.py
insts/x87/arithmetic/change_sign.py
insts/x87/arithmetic/division.py
insts/x87/arithmetic/multiplication.py
insts/x87/arithmetic/partial_remainder.py
insts/x87/arithmetic/round.py
insts/x87/arithmetic/square_root.py
insts/x87/arithmetic/subtraction.py
insts/x87/compare_and_test/__init__.py
insts/x87/compare_and_test/classify.py
insts/x87/compare_and_test/floating_point_ordered_compare.py
insts/x87/compare_and_test/floating_point_unordered_compare.py
insts/x87/compare_and_test/integer_compare.py
insts/x87/compare_and_test/test.py
insts/x87/control/__init__.py
insts/x87/control/clear_exceptions.py
insts/x87/control/initialize.py
insts/x87/control/save_and_restore_x87_control_word.py
insts/x87/control/save_and_restore_x87_environment.py
insts/x87/control/save_x87_status_word.py
insts/x87/control/wait_for_exceptions.py
insts/x87/data_transfer_and_conversion/__init__.py
insts/x87/data_transfer_and_conversion/conditional_move.py
insts/x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
insts/x87/data_transfer_and_conversion/exchange.py
insts/x87/data_transfer_and_conversion/extract.py
insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
insts/x87/load_constants/__init__.py
insts/x87/load_constants/load_0_1_or_pi.py
insts/x87/load_constants/load_logarithm.py
insts/x87/no_operation.py
insts/x87/stack_management/__init__.py
insts/x87/stack_management/clear_state.py
insts/x87/stack_management/stack_control.py
insts/x87/transcendental_functions/__init__.py
insts/x87/transcendental_functions/logarithmic_functions.py
insts/x87/transcendental_functions/trigonometric_functions.py
macroop.isa
main.isa
microasm.isa
microops/base.isa
microops/debug.isa
microops/fpop.isa
microops/ldstop.isa
microops/limmop.isa
microops/microops.isa
microops/regop.isa
microops/seqop.isa
microops/specop.isa
operands.isa
outputblock.isa
specialize.isa
/gem5/src/arch/x86/isa_traits.hh
/gem5/src/arch/x86/kernel_stats.hh
/gem5/src/arch/x86/linux/linux.cc
/gem5/src/arch/x86/linux/linux.hh
/gem5/src/arch/x86/linux/process.cc
/gem5/src/arch/x86/linux/process.hh
/gem5/src/arch/x86/linux/syscalls.cc
/gem5/src/arch/x86/linux/system.cc
/gem5/src/arch/x86/linux/system.hh
/gem5/src/arch/x86/miscregs.hh
/gem5/src/arch/x86/mmaped_ipr.hh
/gem5/src/arch/x86/pagetable.cc
/gem5/src/arch/x86/pagetable.hh
/gem5/src/arch/x86/pagetable_walker.cc
/gem5/src/arch/x86/pagetable_walker.hh
/gem5/src/arch/x86/predecoder.cc
/gem5/src/arch/x86/predecoder.hh
/gem5/src/arch/x86/predecoder_tables.cc
/gem5/src/arch/x86/process.cc
/gem5/src/arch/x86/process.hh
/gem5/src/arch/x86/registers.hh
/gem5/src/arch/x86/remote_gdb.cc
/gem5/src/arch/x86/remote_gdb.hh
/gem5/src/arch/x86/segmentregs.hh
/gem5/src/arch/x86/system.cc
/gem5/src/arch/x86/system.hh
/gem5/src/arch/x86/tlb.cc
/gem5/src/arch/x86/tlb.hh
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.cc
/gem5/src/arch/x86/utility.hh
/gem5/src/arch/x86/vtophys.cc
/gem5/src/arch/x86/vtophys.hh
/gem5/src/arch/x86/x86_traits.hh
7081:ff2321547ca3 12-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Make the cvti2f microop sign extend its integer source correctly.

The code was using the wrong bit as the sign bit. Other similar bits of code
seem to be correct.

7080:c52c581277bf 12-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Actual change that fixes div. How did that happen?

7072:d9823ce926fa 02-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Sometimes CPUID depends on ecx, so pass that in.

7070:abdcb0389716 02-May-2010 Gabe Black <gblack@eecs.umich.edu>

X86: Finally fix a division corner case.

When doing an unsigned 64 bit division with a divisor that has its most
significant bit set, the division code would spill a bit off of the end of a
uint64_t trying to shift the dividend into position. This change adds code
that handles that case specially by purposefully letting it spill and then
going ahead assuming there was a 65th one bit.

6867:a5511b8990ea 05-Nov-2009 Nathan Binkert <nate@binkert.org>

compile: compile on 32 bit hardware

6801:353726c415f4 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a common named flag for signed media operations.

6800:335f8b406bb9 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate high multiplies.

6799:36131e4dfb6e 19-Dec-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a common flag with a name to indicate scalar media instructions.

6742:a2a79fe9655d 11-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: add ULL to 1's being shifted in 64-bit values

Some of the micro-ops weren't casting 1 to ULL before shifting,
which can cause problems. On the perl makerand input this
caused some values to be negative that shouldn't have been.

The casts are done as ULL(1) instead of 1ULL to match others
in the m5 code base.

6736:530e457c88c7 09-Nov-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make x86 use PREFETCH instead of PF_EXCLUSIVE.

6733:16817406af29 10-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Fix bugs in movd implementation.

Unfortunately my implementation of the movd instruction had two bugs.

In one case, when moving a 32-bit value into an xmm register, the
lower half of the xmm register was not zero extended.

The other case is that xmm was used instead of xmmlm as the source
for a register move. My test case didn't notice this at first
as it moved xmm0 to eax, which both have the same register
number.

6732:4b93003bb069 10-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Remove double-cast in Cvtf2i micro-op

This double cast led to rounding errors which caused
some benchmarks to get the wrong values, most notably lucas
which failed spectacularly due to CVTTSD2SI returning an
off-by-one value. equake was also broken.

6715:fb4a3a61bc74 04-Nov-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Fix problem with movhps instruction

This problem is like the one fixed with movhpd a few weeks ago.
A +8 displacement is used to access memory when there should
be none.

This fix is needed for the perlbmk spec2k benchmark to run.

6707:0e5037cecaf7 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Add support for x86 psrldq and pslldq instructions

These are complicated instructions and the micro-code might be suboptimal.

This has been tested with some small sample programs (attached)

The psrldq instruction is needed by various spec2k programs.

6706:ea20065f6614 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Implement movd_Vo_Edp on X86

This patch implements the movd_Vo_Edp series of instructions.

It addresses various concerns by Gabe Black about which file the
instruction belonged in, as well as supporting REX prefixed
instructions properly.

This instruction is needed for some of the spec2k benchmarks, most
notably bzip2.

6705:3c810b64ee7d 30-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

X86: Implement the X86 sse2 haddpd instruction

This patch implements the haddpd instruction.

It fixes the problem in the previous version (pointed out by Gabe Black)
where an incorrect result would happen if you issue the instruction
with the same argument twice, i.e. "haddpd %xmm0,%xmm0"

This instruction is used by many spec2k benchmarks.

6698:21047815f78e 28-Oct-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Replace "DISPLACEMENT" with disp in movhpd.

6697:4863725cb4d9 27-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Fix problem with the x86 sse movhpd instruction.

The movhpd instruction was writing to the wrong memory offset.

6696:e533bec78924 21-Oct-2009 Vince Weaver <vince@csl.cornell.edu>

Implement X86 sse2 movdqu and movdqa instructions

The movdqa instruction should enforce 16-byte alignment.
This implementation does not do that.

These instructions are needed for most of x86_64 spec2k to run.

6647:5a9fd91b66a3 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Sign extend the immediate of wripi like the register version.

6646:d9c23fff4f13 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the imm8 member of immediate microops really 8 bits consistently.

6645:c248b0348d85 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix checking the NT bit during an IRET.

6644:57fba079b7ff 16-Sep-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix setting the busy bit in the task descriptor in LTR.

6624:b157ef23d76c 23-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Preserve the NO_ACCESS flag when giving CDA a specialized interface.

6622:aff9a522956a 21-Aug-2009 Nathan Binkert <nate@binkert.org>

X86: fix some simple compile issues
static should not be used for constants that are not inside a class definition.

6619:de112a8ac3d8 20-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the decoding for and fill out FST and FSTP.

6618:2cd3ce4fa03f 20-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microassembler symbols for floating point stack register operands.

6616:33837b097d69 18-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode the immediate byte opcode extension for 3dNow! instructions.

6615:f0e4e63310e5 18-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode three byte opcodes.

6611:2cd76560a1f1 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Double check the two byte portion of the decoder and fix bugs/clean up.

6610:dbfe22c711d5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVNTI.

6608:6d1f74b21533 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVQ2DQ.

6607:dba8e329e783 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVDQ2Q.

6606:03fd282998d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert fp values to ints.

6605:e16cf917dcec 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop for converting fp values to ints.

6604:b750348f6da3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write a mask as a result.

6603:b3333ef98685 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes a mask as a result.

6602:95b882ce7b10 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write to rflags.

6601:457527e517cc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes to rflags.

6600:bb997cd711af 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVSS.

6599:a578850e7524 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LDMXCSR.

6598:82d1d4d217e4 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement STMXCSR.

6597:4903cea6a8c2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the shuffle media instructions.

6596:e60eaef99523 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a shuffle media microop.

6595:2aec993cdd8f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the mask move instructions.

6594:a5dbea7ba3f9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a mask move microop.

6593:f27fd3c3a153 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that move sign bits.

6592:0143f8c4b2c2 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that moves sign bits.

6591:3d1ea9362fe5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the insert/extract instructions.

6590:b617e9c8352e 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the decoder where the insert/extract instructions go.

6589:7b0f907855d5 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Extend mov2int and mov2fp so they can support insert and extract instructions.

6588:f449753172ee 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media average instructions.

6587:1cb6f8b427c0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media average microop.

6586:e8af0cf94c37 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the multiply and add instructions.

6585:0eab2a19847a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Let the integer multiply microop use every other possible source value.

6584:5355f44912f6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media shifts that operate on 64 bits or less at a time.

6583:04df43def004 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media shift microops. These don't handle full 128 bit wide shifts.

6582:7e1af04f4ead 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the sum of absolute differences instructions.

6581:e0f289b84a4b 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a "sum of absolute differences" microop.

6580:a1c40860fe09 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer subtract instructions.

6579:26d371ccd503 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media subtract microop.

6578:825b77196521 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media multiply instructions.

6577:cfe4a8f16e5f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media integer multiply microop.

6576:8038b47efe64 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make larger blocks of instructions use the Inst format by default.

6575:e5a3ae40c4d0 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media max instructions.

6574:991d265901cc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media max microop.

6573:6e14c5d36a1a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the integer media min instructions.

6572:b0cef5e2dfdb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a media integer min microop.

6571:91d9599956f3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media integer addition instructions.

6570:d7907eaf7419 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an integer media addition microop with optional saturation.

6569:e8cb266c9451 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that convert between forms of floating point.

6568:a34aae12095c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media microop that converts between floating point data types.

6567:819107c2c851 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the instructions that compare fp values and write masks as the result.

6566:c246dc2ec640 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a microop that compares fp values and writes a mask as its result.

6565:b7f5a02ea9b7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVDDUP instruction.

6564:9ed64f6888cf 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement many of the media mov instructions.

6563:2c5b80c75da7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media instructions that convert integer values to floating point.

6562:571fd8d89903 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media microop for converting integer values to floating point.

6561:3f716cda05c9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media instructions.

6560:323d48647000 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media divide microop.

6559:e4f60f716103 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media multiply instructions.

6558:8f37a2946cc3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media multiply microop.

6557:f677e05d723d 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media subtract instructions.

6556:0e597fe2b391 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media floating point subtract microop.

6555:dae81a15cfcc 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media add instructions.

6554:22cb3c1ea3fb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media add microop.

6553:897523ead7ce 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media sqrt instructions.

6552:fa0ea492a075 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media square root microop.

6551:52b4167056ed 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point max instructions.

6550:9754d16c242c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the floating point media max microop.

6549:d6ae13f56801 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the media floating point min instructions.

6548:130e3dd23eab 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a floating point media min microop.

6547:3f6c31c3d59e 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the pack instructions.

6546:c7e724c1570f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Create a pack media microop.

6545:9c68aea7b1e6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename sel to ext for media microops.

6544:406ad51ece90 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the MMX version of MOVD into the simd64 directory.

6543:a9a5dd560925 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the remaining unpack instructions.

6542:059e35b593a8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PANDN, ANDNPS, and ANDNPD.

6541:f70ee159db59 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a multimedia andn microop.

6540:17414b661543 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PAND, ANDPS, and ANDPD.

6539:df1ebe278239 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a multimedia and microop.

6538:6cf5a0235ae8 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement POR, ORPD and ORPS.

6537:bebbb828a363 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media or microop.

6536:dc54f4fd6116 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PXOR.

6535:b595412884f9 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: (Re)implement XORPS and XORPD.

6534:0943f0e54f0f 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a media xor microop.

6533:2977e2e2dc27 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLQDQ.

6532:f7c42d003529 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHQDQ.

6531:6e2f4aa11482 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHDQ.

6530:cdb6bde20266 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHWD.

6529:cde96afcb3e3 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKHBW.

6528:5c3a713ec1bb 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLDQ.

6527:4af40cccf527 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement PUNPCKLWD.

6526:2f72755b4af7 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use XMM registers.

6525:b252af5cda46 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the MOVQ instruction.

6524:e207990ddd14 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lfpimm microop.

6523:da0f91a2d60b 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX source.

6522:c256e28ad056 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of PUNPCKLBW that use MMX registers.

6521:ff5e7e6bcfbd 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an unpack microop.

6520:962f58808d53 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the versions of MOVD that have an MMX destination.

6519:36369ba5fad6 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Ignore the size part of XMM/MMX operands. The instructions know what they want.

6518:1ad4a7774b3c 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use suffixes to differentiate XMM/MMX/GPR operands.

6517:584314d07394 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microcode assembler symbols for mmx registers.

6516:b5b420d15a20 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set up a media microop framework and create mov2int and mov2fp microops.

6514:1802d70f4092 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Turn the DIV and IDIV microcode into templates and generate all the variants.

6513:e2ffac65a76a 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Remove some FIXMEs from IDIV that have been fixed.

6512:b19a86a6d424 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Turn the CMPXCHG8B microcode into a template and generate each variant.

6503:843ec3da7584 17-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug introduced to IDIV in a recent attempt to fix another bug.

6486:33faa9915d16 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the CMPXCHG8B/CMPXCHG16B instruction.

6485:4f70960761cd 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't clobber the original dividend when doing signed divide.

6484:c72296d5ee85 09-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Decode byte sized singed divide as byte sized.

6482:e4b8ec60fd4b 08-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make not taken conditional moves leave the destination alone. Adjust CMOVcc.
The manuals from both AMD and Intel say that when writing to a 32 bit
destination in 64 bit mode, the upper 32 bits of the register are filled with
zeros. They also both say that the CMOV instructions leave their destination
alone when their condition fails. Unfortunately, it seems that CMOV will zero
extend its destination register whether or not it was supposed to actually do
a move on both platforms. This seems to be the only case where this happens,
but it would be hard to say for sure.

6481:fa6d324aa2f9 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: (Re)Implemented SHRD.

6480:ed9d773de88f 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement SHLD.

6479:b9ab1b56391b 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shift right/left double microops.
This is my best guess as far as what these should do. Other existing microops
use implicit registers, mul1s and mul1u for instance, so this should be ok.
The microop that loads the implicit DoubleBits register would fall into one
of the microop slots for moving to/from special registers.

6478:2ec6bfc8f9c7 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the qaud width bswap instruction handle the fact that 32 bit operations zero extend.

6477:f3c9335ec2cd 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the right field when using legacy prefixes to distinguish instructions.

6476:adbd07f1630d 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Don't truncate the immediate parameter for the ENTER instruction.

6475:951199885fd8 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Adjust the various sizes used for the enter and leave instructions.

6474:585faad1057f 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make scas compare its operands in the right order.

6473:2b1bb253c05e 07-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy/paste error for cmovnp.

6464:2529aeaf1a1c 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make conditional moves zero extend their 32 bit destinations always.

6463:fe6165923529 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix condition code setting for signed multiplies with negative results.

6462:209c3818a863 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the check for negative operands for sign multiply more direct.

6461:418145f4d7a6 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure immediate values are truncated properly.
Register values will be "picked" which will assure they don't have junk beyond
the part we're using. Immediate values don't go through a similar process, so
we should truncate them explicitly.

6460:59108c231208 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the new forced folding mechanism for the SAHF and LAHF instructions.

6459:f7f0d361d6fc 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the indexing for ah in byte division instructions.

6458:d959f578ae42 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the indexing for ah in byte multiply instructions.

6457:f964c623723c 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Let microops force folding an index into the high byte of a register.

6456:57e6d35dde10 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotate left with carry instructions that go all the way around or more.

6455:709527fb7250 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags on rotate left with carry instructions.

6454:755cf9b6185f 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotate right with carry instructions that go all the way around or more.

6453:1d4dbb357560 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the overflow bit for rotate right with carry.

6452:751b06abbaae 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the computation of the bottom part of rotate right with carry.

6451:fc096f28bcd2 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the computation of the upper part of rotate right with carry.

6450:b9aa6a397b57 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags for rotate right with carry instructions.

6449:a7a428f403da 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle rotating right all the way around or more.

6448:a32abe4e17e1 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set the flags on a rotate right instruction.

6447:eebbe9f1bf10 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make shifts/rotations that write to 32 bits of a register zero extend.

6446:cc8568cfce8f 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Handle left rotations that go all the way around or more.

6445:647111272094 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Actually set the flags on a rotate left instruction.

6444:8e72cf8196cc 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sar carry flag.

6443:fa4e81c993d0 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix sign extension when doing an arithmetic shift right by 0.

6442:580a6fbc7585 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the carry flag for shr.

6441:801f1fc07a58 05-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the carry flag for shl.

6430:4c5671ecceda 02-Aug-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the high result of mul1s, and removed undefined shifts from the mult microops.

6360:c3058964d06f 17-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Tame the wilds of def operands.

6345:f9ae7c3a036c 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Take limitted advantage of the compilers type checking for microop operands.

6344:b7104eda0795 16-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a number of places where the wrong form of a microop was used.

6336:25635830e33c 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fold the MiscRegFile all the way into the ISA object.

6329:5d8b91875859 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

Registers: Add a registers.hh file as an ISA switched header.
This file is for register indices, Num* constants, and register types.
copyRegs and copyMiscRegs were moved to utility.hh and utility.cc.


/gem5/src/arch/SConscript
/gem5/src/arch/alpha/SConscript
/gem5/src/arch/alpha/isa_traits.hh
/gem5/src/arch/alpha/miscregfile.hh
/gem5/src/arch/alpha/regfile.cc
/gem5/src/arch/alpha/regfile.hh
/gem5/src/arch/alpha/registers.hh
/gem5/src/arch/alpha/regredir.hh
/gem5/src/arch/alpha/types.hh
/gem5/src/arch/alpha/utility.cc
/gem5/src/arch/alpha/utility.hh
/gem5/src/arch/arm/SConscript
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/misc_regfile.hh
/gem5/src/arch/arm/regfile.cc
/gem5/src/arch/arm/regfile.hh
/gem5/src/arch/arm/registers.hh
/gem5/src/arch/arm/types.hh
/gem5/src/arch/arm/utility.hh
/gem5/src/arch/mips/isa_traits.hh
/gem5/src/arch/mips/locked_mem.hh
/gem5/src/arch/mips/mt.hh
/gem5/src/arch/mips/regfile.hh
/gem5/src/arch/mips/registers.hh
/gem5/src/arch/mips/tlb.cc
/gem5/src/arch/mips/types.hh
/gem5/src/arch/mips/utility.cc
/gem5/src/arch/mips/utility.hh
/gem5/src/arch/sparc/SConscript
/gem5/src/arch/sparc/isa/includes.isa
/gem5/src/arch/sparc/isa_traits.hh
/gem5/src/arch/sparc/linux/process.cc
/gem5/src/arch/sparc/miscregfile.hh
/gem5/src/arch/sparc/miscregs.hh
/gem5/src/arch/sparc/regfile.cc
/gem5/src/arch/sparc/regfile.hh
/gem5/src/arch/sparc/registers.hh
/gem5/src/arch/sparc/solaris/process.cc
/gem5/src/arch/sparc/types.hh
/gem5/src/arch/sparc/utility.cc
/gem5/src/arch/sparc/utility.hh
/gem5/src/arch/x86/SConscript
/gem5/src/arch/x86/emulenv.hh
includes.isa
/gem5/src/arch/x86/isa_traits.hh
/gem5/src/arch/x86/linux/process.cc
/gem5/src/arch/x86/miscregfile.hh
/gem5/src/arch/x86/regfile.cc
/gem5/src/arch/x86/regfile.hh
/gem5/src/arch/x86/registers.hh
/gem5/src/arch/x86/types.hh
/gem5/src/arch/x86/utility.cc
/gem5/src/arch/x86/utility.hh
/gem5/src/cpu/legiontrace.cc
/gem5/src/cpu/nativetrace.cc
/gem5/src/cpu/o3/free_list.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/o3/rename_impl.hh
/gem5/src/cpu/o3/thread_context_impl.hh
/gem5/src/cpu/ozone/cpu.hh
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/thread_context.hh
/gem5/src/mem/physical.cc
/gem5/src/sim/process.hh
6298:9af8736c26be 09-Jul-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in IRET_PROT's microcode. The immediate form of sra was intended.

6222:9ee4a06a960b 29-May-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Keep track of more descriptor state to accomodate KVM.

6132:916f10213bea 23-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Put the StoreCheck flag with the others, and don't collide with other flags.

6100:a61ac4a3591d 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up a copyright.

6098:34690e3cf53e 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Recognize and handle the lock legacy prefix.

6097:842991b33990 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XADD.

6096:72f1239a1583 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTC.

6095:c36f932461d9 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTR.

6094:28198ab3adec 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of CMPXCHG.

6093:7b88298769c7 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of BTS.

6092:e4ffbb3546fa 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of DEC.

6091:d430acd6d5ce 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of INC.

6090:80d7669e9cdb 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of NEG.

6089:030c2a63fb61 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of NOT.

6088:c698cbf56cf1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XCHG.

6087:7736bc8824a1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of XOR.

6086:2ac9ab003d54 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of SUB.

6085:c210d3e04532 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of AND.

6084:cb751de62299 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of SBB.

6083:c669a6f8fa9e 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of ADC.

6082:5db340cc3c47 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of OR.

6081:e5da3985fa99 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a locking version of ADD.

6080:50890791c591 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the stul microop.
This microop does a store and unlocks the requested address. The RISC86
microop ISA doesn't seem to have an equivalent to this, so I'm guessing that
the store following an ldstl is automatically unlocking. We don't do it this
way for performance reasons since the behavior is the same.

6079:f39c5598a302 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ldstl microop.
This microop does a load, checks that a store would succeed, and locks the
requested address.

6070:3b0f44b3e0e1 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TEST instruction set all the flags it's supposed to.

6062:2116d308076f 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Explicitly use the right width in a few places that need a 64 bit value.

6060:3d524dc980a8 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement far jmp.

6058:b62d79c1990b 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the chks microop where it ignored that it found a fault.

6057:882f1b921de7 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the interrupt entering microcode record the value to use, not actually use it.

6056:4435d13700de 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: LEA calculates an address before segmentation.

6055:40bdbc32e3db 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the save machine status word instruction (SMSW).

6054:0aa0a6189767 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the load machine status word instruction (LMSW).

6052:2b660729f136 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Only use %eax to select a function and look like we support sse2.

6051:47a52383002b 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the mov to segment selector in real mode instruction microcode.

6048:65a321a3a691 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INIT IPI.

6047:bc8caab35dd0 19-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the halt microop.

6020:0647c8b31a99 06-Apr-2009 Gabe Black <gblack@eecs.umich.edu>

Merge ARM into the head. ARM will compile but may not actually work.


/gem5/ext/dnet/dnet/addr.h
/gem5/ext/dnet/dnet/arp.h
/gem5/ext/dnet/dnet/blob.h
/gem5/ext/dnet/dnet/eth.h
/gem5/ext/dnet/dnet/fw.h
/gem5/ext/dnet/dnet/icmp.h
/gem5/ext/dnet/dnet/intf.h
/gem5/ext/dnet/dnet/ip.h
/gem5/ext/dnet/dnet/ip6.h
/gem5/ext/dnet/dnet/os.h
/gem5/ext/dnet/dnet/rand.h
/gem5/ext/dnet/dnet/route.h
/gem5/ext/dnet/dnet/tcp.h
/gem5/ext/dnet/dnet/udp.h
/gem5/src/arch/alpha/syscallreturn.hh
/gem5/src/arch/arm/ArmTLB.py
/gem5/src/arch/arm/isa_traits.hh
/gem5/src/arch/arm/linux/process.cc
/gem5/src/arch/arm/process.cc
/gem5/src/arch/arm/process.hh
/gem5/src/arch/arm/regfile/regfile.cc
/gem5/src/arch/arm/regfile/regfile.hh
/gem5/src/arch/arm/syscallreturn.hh
/gem5/src/arch/arm/tlb.cc
/gem5/src/arch/arm/tlb.hh
/gem5/src/arch/mips/syscallreturn.hh
/gem5/src/arch/sparc/syscallreturn.hh
insts/general_purpose/processor_information.py
/gem5/src/arch/x86/smbios.cc
/gem5/src/arch/x86/smbios.hh
/gem5/src/arch/x86/syscallreturn.hh
/gem5/src/base/annotate.cc
/gem5/src/base/annotate.hh
/gem5/src/base/stats/statdb.cc
/gem5/src/base/stats/statdb.hh
/gem5/src/cpu/o3/alpha/cpu.cc
/gem5/src/cpu/o3/alpha/cpu.hh
/gem5/src/cpu/o3/alpha/cpu_builder.cc
/gem5/src/cpu/o3/alpha/cpu_impl.hh
/gem5/src/cpu/o3/alpha/dyn_inst.cc
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/alpha/dyn_inst_impl.hh
/gem5/src/cpu/o3/alpha/impl.hh
/gem5/src/cpu/o3/alpha/params.hh
/gem5/src/cpu/o3/alpha/thread_context.cc
/gem5/src/cpu/o3/alpha/thread_context.hh
/gem5/src/cpu/o3/mips/cpu.cc
/gem5/src/cpu/o3/mips/cpu.hh
/gem5/src/cpu/o3/mips/cpu_builder.cc
/gem5/src/cpu/o3/mips/cpu_impl.hh
/gem5/src/cpu/o3/mips/dyn_inst.cc
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst_impl.hh
/gem5/src/cpu/o3/mips/impl.hh
/gem5/src/cpu/o3/mips/params.hh
/gem5/src/cpu/o3/mips/thread_context.cc
/gem5/src/cpu/o3/mips/thread_context.hh
/gem5/src/cpu/o3/params.hh
/gem5/src/cpu/o3/sparc/cpu.cc
/gem5/src/cpu/o3/sparc/cpu.hh
/gem5/src/cpu/o3/sparc/cpu_builder.cc
/gem5/src/cpu/o3/sparc/cpu_impl.hh
/gem5/src/cpu/o3/sparc/dyn_inst.cc
/gem5/src/cpu/o3/sparc/dyn_inst.hh
/gem5/src/cpu/o3/sparc/dyn_inst_impl.hh
/gem5/src/cpu/o3/sparc/impl.hh
/gem5/src/cpu/o3/sparc/params.hh
/gem5/src/cpu/o3/sparc/thread_context.cc
/gem5/src/cpu/o3/sparc/thread_context.hh
/gem5/src/dev/SimConsole.py
/gem5/src/dev/alpha/AlphaConsole.py
/gem5/src/dev/alpha/console.cc
/gem5/src/dev/alpha/console.hh
/gem5/src/dev/mips/MipsConsole.py
/gem5/src/dev/mips/console.cc
/gem5/src/dev/mips/console.hh
/gem5/src/dev/pitreg.h
/gem5/src/dev/simconsole.cc
/gem5/src/dev/simconsole.hh
/gem5/src/dev/x86/Opteron.py
/gem5/src/dev/x86/opteron.cc
/gem5/src/dev/x86/opteron.hh
/gem5/src/mem/cache/tags/split.cc
/gem5/src/mem/cache/tags/split.hh
/gem5/src/mem/cache/tags/split_blk.hh
/gem5/src/mem/cache/tags/split_lifo.cc
/gem5/src/mem/cache/tags/split_lifo.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/cache/tags/split_lru.hh
/gem5/src/mem/config/prefetch.hh
/gem5/src/python/generate.py
/gem5/src/python/m5/attrdict.py
/gem5/src/python/m5/multidict.py
/gem5/src/python/m5/util.py
/gem5/src/python/swig/init.hh
/gem5/src/unittest/Makefile
/gem5/src/unittest/initest.ini
/gem5/src/unittest/lru_test.cc
/gem5/src/unittest/offtest.cc
/gem5/src/unittest/paramtest.cc
/gem5/src/unittest/rangemaptest2.cc
/gem5/src/unittest/sized_test.cc
/gem5/src/unittest/tracetest.cc
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/o3-timing/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/00.gzip/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/10.mcf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/30.eon/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/40.perlbmk/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/50.vortex/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/60.bzip2/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stderr
/gem5/tests/long/70.twolf/ref/sparc/linux/simple-timing/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.hconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/console.system.t1000.pconsole
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/m5stats.txt
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stderr
/gem5/tests/long/80.solaris-boot/ref/sparc/solaris/t1000-simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/o3-timing/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/alpha/tru64/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/mips/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/00.hello/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/m5stats.txt
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stderr
/gem5/tests/quick/01.hello-2T-smt/ref/alpha/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/o3-timing/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-atomic/stdout
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/m5stats.txt
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stderr
/gem5/tests/quick/02.insttest/ref/sparc/linux/simple-timing/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-atomic/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing-dual/stdout
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/console.system.sim_console
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/m5stats.txt
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stderr
/gem5/tests/quick/10.linux-boot/ref/alpha/linux/tsunami-simple-timing/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/detailed/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-atomic/stdout
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/m5stats.txt
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stderr
/gem5/tests/quick/20.eio-short/ref/alpha/eio/simple-timing/stdout
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/m5stats.txt
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stderr
/gem5/tests/quick/50.memtest/ref/alpha/linux/memtest/stdout
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.drivesys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/console.testsys.sim_console
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/m5stats.txt
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stderr
/gem5/tests/quick/80.netperf-stream/ref/alpha/linux/twosys-tsunami-simple-atomic/stdout
/gem5/util/batch/jobfile.py
/gem5/util/pbs/jobfile.py
/gem5/util/stats/orderdict.py
5977:4fff54ab52ae 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shrd.

5974:9ed073dd5214 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Set address size to 64 bits when generating addresses internally.

5972:63611864864f 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement sysenter as a system call interface.

5969:815827deb469 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Take address size into account when computing an effective address.

5968:6f9f1438360a 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make instructions that use intseg preserve all 8 bytes of their addresses.

5967:ff9203dd7608 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a decoder bug and add in some missing instructions.

5966:833e487aa8f7 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Respect segment override prefixes even when there's no ModRM byte.

5965:71f8d7c12619 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix segment limit checks.

5961:969fb3187eba 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Compute shift instruction flags correctly.

5957:f24733876990 27-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the int system call interface in the decoder.

5948:871fccb3fb7a 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement IST stack switching.

5937:177534612ec0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lldt instruction.

5936:c30088a243ad 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add segmentation checks for ldt related descriptors and selectors.

5935:df55109af564 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the TSS type check actually return a fault if it fails.

5934:367ac7cae7b5 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make rdcr use merge and the mov to control register instructions use the right operand size.

5933:8b9bc09b149c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement CLTS.

5932:afa0866171e1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the segment register reading microops use merge.

5931:d42d507ccdb1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the mov to debug register intructions.

5930:ec124ac0984b 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Rename oszForPseudoDesc maxOsz to reflect its more general use.

5928:410d14f82f13 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a few bugs with the segment register instructions in real mode.
Fix a few instances where the register form of zext was used where zexti was
intended. Also get rid of the 64 bit only rip relative addressed version since
64 bit and real mode are mutually exclusive.

5927:5e3367b103da 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Do a merge for the zero extension microop.

5926:c182698e1ab3 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops for reading/writing debug registers.

5924:516eda09c743 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Check src1 for illegal values since that's the index we actually use.

5923:9a024981aa60 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the fence instructions. These are not microcoded.

5920:5a9c976270d6 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a basic prefetch instruction.

5919:08f836f37f61 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use the right portion of a register for stores.

5916:4bbd6239223c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Update CS later so stack accesses have the right permission checks.

5913:f2bfe08dc873 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Use atCPL0 for accesses that are part of CPU machinery.

5912:d113f6def227 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a flag to force memory accesses to happen at CPL 0.

5911:8d6e40f38063 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move where CS is set so CPL checks work out.

5908:c24a1ffc4ad0 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the sysret instruction in long mode.

5907:8a633e6a8df1 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the longmode versions of the syscall instruction.

5906:fe94a5f1f229 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the microcode assembler recognize r8-r15.

5905:e342ab8f92fa 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a wrattr microop.

5903:3d7f94358641 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make exceptions handle stack switching.

5902:7a323daa3df2 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LTR instruction.

5901:76fc2c3e10d2 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix segment limit checking.

5900:6776001c9b92 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check to chks to verify a task state segment descriptor.

5899:b702f4fdf16c 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check to chks which raises #GP(selector) if selector is NULL or not in the GDT.

5892:a0ef4a6349dc 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the stupd microop not update registers in initiateAcc.

5890:bdef71accd68 25-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

CPU: Get rid of translate... functions from various interface classes.

5861:8c1aa74572e4 06-Feb-2009 Nathan Binkert <nate@binkert.org>

Quell g++ 4.3 warning about operator ambiguity

5858:54f64fb1bd62 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: All x86 fault classes now attempt to do something useful.

5857:8cd8e1393990 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the fault classes handle error codes better.

5856:f770af5600c9 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the long mode interrupt/exception microcode handle an error code.

5855:d4e54239ed37 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Distinguish between hardware and software interrupts/exceptions

5854:f58bee925c28 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the upper bound on some ranges that were setting up the micro code assembler.

5853:606b9525071d 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Make the chks microop check for the right int descriptor type.

5852:1a40b07bbc30 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Touch up the interrupt entering microcode.

5846:66021eb985f5 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the microcode for the LODS instruction.

5839:4cc05b7f2a97 01-Feb-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix some incorrect register widths.

5815:18ed7aa8e8e1 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the xadd instruction.

5814:a9e8668557bf 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the bswap instruction.

5812:d12ff89c7692 25-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a bug in the iret microcode.

5789:46c548dbe620 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the M5 pseudo insts.

5788:6d4161a36ca1 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Autogenerate macroop generateDisassemble function.

5786:07f635cab026 07-Jan-2009 Gabe Black <gblack@eecs.umich.edu>

X86: Move the macroop class out of the isa description into C++.

5727:8b9aaeac5bab 10-Nov-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix completeAcc get call.

5692:0d6addcde185 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Set the delayed commit flag in x86 microops appropriately.

5685:a55b78e4b6d6 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the segment setting code in IRET, and make it restore the flags.

5683:e1a1d8bba254 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the swapgs instruction.

5682:6f1cab082ba7 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add wrval/rdval microops for reading significant miscregs.

5680:39ae093fb4eb 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement entering an interrupt in microcode.

5679:0b7855e2b731 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure register microops set fault rather than returning one.

5678:9af6981bb086 13-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an wrdh microop which loads bases/offsets from 16 byte descriptors.

5676:cca6726c0d88 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement local labels for the ROM that actually refer into the ROM.

5675:7828ee363019 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the chks check of interrupt gate target code segments.

5674:4a4f20dfbc60 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a check type for interrupt gates.

5673:57be483cea36 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix chks checking the submode for stack segments.

5672:f332946e12b2 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Let segment manipulation microops be conditional.

5671:379f926bc5ff 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Let the microassembler know about the microcode only H segment.

5670:1df7cdfc4aa6 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the rdbase microop

5667:78b94954f66a 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create a handy way to access labels from the ROM in microcode.

5666:e7925fa8f0d6 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make X86's microcode ROM actually do something.

5663:be5cb9485aed 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create an eret microop which returns from ROM to combinational decoding.

5662:4f3371a1c58c 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make Br never report itself as the last microop.

5661:443e6f925027 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Create a SeqOp class of microops and make Br one of them.

5659:f4b9c344d1ca 12-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement CPUID with a magical function instead of microcode.

5591:b05a5c5452e0 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the debugging microops. The debug functions can't handle a string object format.

5590:2ff5831fd2eb 09-Oct-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make far ret modify CS instead of some random selector.

5543:3af77710f397 10-Sep-2008 Ali Saidi <saidi@eecs.umich.edu>

style: Remove non-leading tabs everywhere they shouldn't be. Developers should configure their editors to not insert tabs


/gem5/configs/common/Benchmarks.py
/gem5/src/arch/alpha/aout_machdep.h
/gem5/src/arch/alpha/ev5.cc
/gem5/src/arch/alpha/floatregfile.hh
/gem5/src/arch/alpha/ipr.cc
/gem5/src/arch/alpha/ipr.hh
/gem5/src/arch/alpha/isa_traits.hh
/gem5/src/arch/alpha/linux/linux.cc
/gem5/src/arch/alpha/linux/linux.hh
/gem5/src/arch/alpha/miscregfile.hh
/gem5/src/arch/alpha/osfpal.cc
/gem5/src/arch/alpha/pagetable.hh
/gem5/src/arch/alpha/regfile.hh
/gem5/src/arch/alpha/remote_gdb.cc
/gem5/src/arch/alpha/system.cc
/gem5/src/arch/alpha/tlb.cc
/gem5/src/arch/alpha/tru64/process.cc
/gem5/src/arch/alpha/tru64/tru64.cc
/gem5/src/arch/alpha/tru64/tru64.hh
/gem5/src/arch/isa_parser.py
/gem5/src/arch/isa_specific.hh
/gem5/src/arch/mips/isa_traits.hh
/gem5/src/arch/mips/linux/linux.cc
/gem5/src/arch/mips/linux/linux.hh
/gem5/src/arch/mips/regfile/regfile.hh
/gem5/src/arch/mips/system.cc
/gem5/src/arch/mips/tlb.cc
/gem5/src/arch/mips/tlb.hh
/gem5/src/arch/sparc/isa_traits.hh
/gem5/src/arch/sparc/linux/linux.cc
/gem5/src/arch/sparc/linux/linux.hh
/gem5/src/arch/sparc/miscregfile.hh
/gem5/src/arch/sparc/regfile.hh
/gem5/src/arch/sparc/remote_gdb.cc
/gem5/src/arch/sparc/solaris/solaris.cc
/gem5/src/arch/sparc/solaris/solaris.hh
/gem5/src/arch/sparc/sparc_traits.hh
insts/general_purpose/cache_and_memory_management.py
insts/general_purpose/control_transfer/call.py
insts/general_purpose/control_transfer/interrupts_and_exceptions.py
insts/general_purpose/data_conversion/ascii_adjust.py
insts/general_purpose/data_conversion/bcd_adjust.py
insts/general_purpose/data_conversion/endian_conversion.py
insts/general_purpose/data_conversion/extract_sign_mask.py
insts/general_purpose/data_transfer/move.py
insts/general_purpose/load_segment_registers.py
insts/general_purpose/semaphores.py
insts/general_purpose/system_calls.py
/gem5/src/arch/x86/linux/linux.hh
/gem5/src/arch/x86/remote_gdb.cc
/gem5/src/base/bitunion.hh
/gem5/src/base/crc.cc
/gem5/src/base/fast_alloc.cc
/gem5/src/base/fast_alloc.hh
/gem5/src/base/inifile.hh
/gem5/src/base/loader/aout_object.cc
/gem5/src/base/loader/coff_sym.h
/gem5/src/base/loader/coff_symconst.h
/gem5/src/base/loader/ecoff_object.cc
/gem5/src/base/loader/elf_object.cc
/gem5/src/base/loader/hex_file.hh
/gem5/src/base/loader/object_file.hh
/gem5/src/base/loader/symtab.hh
/gem5/src/base/remote_gdb.cc
/gem5/src/base/res_list.hh
/gem5/src/base/stats/flags.hh
/gem5/src/base/stats/mysql.cc
/gem5/src/base/time.hh
/gem5/src/base/trace.hh
/gem5/src/cpu/base_dyn_inst.hh
/gem5/src/cpu/checker/cpu.hh
/gem5/src/cpu/checker/cpu_impl.hh
/gem5/src/cpu/memtest/memtest.hh
/gem5/src/cpu/o3/alpha/dyn_inst.hh
/gem5/src/cpu/o3/mips/dyn_inst.hh
/gem5/src/cpu/o3/regfile.hh
/gem5/src/cpu/ozone/back_end.hh
/gem5/src/cpu/ozone/cpu_impl.hh
/gem5/src/cpu/ozone/front_end.hh
/gem5/src/cpu/ozone/inorder_back_end.hh
/gem5/src/cpu/ozone/lsq_unit_impl.hh
/gem5/src/cpu/ozone/lw_back_end.hh
/gem5/src/cpu/simple/base.hh
/gem5/src/cpu/simple_thread.cc
/gem5/src/cpu/simple_thread.hh
/gem5/src/cpu/static_inst.hh
/gem5/src/dev/alpha/access.h
/gem5/src/dev/etherdump.cc
/gem5/src/dev/mips/access.h
/gem5/src/dev/ns_gige.hh
/gem5/src/dev/pcidev.cc
/gem5/src/dev/pcireg.h
/gem5/src/dev/sinicreg.hh
/gem5/src/kern/linux/linux.hh
/gem5/src/kern/operatingsystem.hh
/gem5/src/kern/solaris/solaris.hh
/gem5/src/kern/tru64/mbuf.hh
/gem5/src/kern/tru64/tru64.hh
/gem5/src/kern/tru64/tru64_syscalls.cc
/gem5/src/mem/cache/blk.hh
/gem5/src/mem/cache/builder.cc
/gem5/src/mem/cache/prefetch/stride.cc
/gem5/src/mem/cache/prefetch/stride.hh
/gem5/src/mem/cache/tags/iic.cc
/gem5/src/mem/cache/tags/lru.cc
/gem5/src/mem/cache/tags/lru.hh
/gem5/src/mem/cache/tags/split_lru.cc
/gem5/src/mem/dram.cc
/gem5/src/mem/physical.hh
/gem5/src/mem/request.hh
/gem5/src/python/m5/SimObject.py
/gem5/src/sim/async.hh
/gem5/src/sim/debug.cc
/gem5/src/sim/eventq.hh
/gem5/src/sim/host.hh
/gem5/src/sim/insttracer.hh
/gem5/src/sim/process.hh
/gem5/src/sim/serialize.cc
/gem5/src/sim/serialize.hh
/gem5/src/sim/sim_events.hh
/gem5/src/sim/syscall_emul.cc
/gem5/src/sim/syscall_emul.hh
/gem5/util/m5/m5op_alpha.S
/gem5/util/m5/m5ops.h
/gem5/util/term/term.c
5540:bf358d99eff7 03-Sep-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the microcode for sign/zero extending moves that use high byte registers.


insts/general_purpose/data_transfer/move.py
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/00.gzip/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/10.mcf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/20.parser/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/60.bzip2/ref/x86/linux/simple-atomic/stdout
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stderr
/gem5/tests/long/70.twolf/ref/x86/linux/simple-atomic/stdout
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/config.ini
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/m5stats.txt
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stderr
/gem5/tests/quick/00.hello/ref/x86/linux/simple-atomic/stdout
5453:5048e2840f39 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the cpuid processor identifier return a real string.

5449:89b696c8b754 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make the disassembly for halt conform with the other microops.

5448:67c8b7badec1 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement and hook up STI and CLI instructions.

5434:2f6dad874e14 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a partial, sort of correct version of the protected mode variant of iret.

5433:1b0b8e9ba6a9 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Change how segment loading is performed.

5432:e1e42f18d376 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make pushes and pops use the stack size instead of the data size.

5429:52dbcf7f7328 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Keep handy values like the operating mode in one register.

5428:5a27fea50fee 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Change what the microop chks does.
Instead of computing the segment descriptor address, this now checks if a
selector value/descriptor are legal for a particular purpose.

5427:1c389acefeb9 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add a microop to read a segments attribute register.

5426:0bdcc60ccc45 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops and supporting code to manipulate the whole rflags register.

5425:4226f6c2d03c 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add microops which panic, fatal, warn, and warn_once.

5424:d4f80459ad5d 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Truncate descriptors to 16 bits.

5423:536fb3cc5a9b 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Redo BSF.

5422:f1f490fe77b0 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out 3dnow instruction decoding a bit and grab the byte immediate.

5420:dc0041a51920 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Make string instructions work when rcx=0.

5418:501cb81c89df 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Bypass unaligned access support for register addressed MSRs.

5415:5c28e3dbdc8e 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the implementation of BSF.

5414:bed5152f6368 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Bit scan forward/reverse were accidentally transposed.

5413:809f33a926c4 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a byte register indexing issue in the sign extending move from memory microcode.

5409:0343cd06df4f 12-Jun-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Add in some support for the tsc register.

5359:8c6ff200e4c1 26-Feb-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the INVLPG instruction and the TIA microop.

5333:0e394c08dcbc 23-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Optomize the bit scanning instruction microassembly a little. More can be done.

5332:0e25e0b6982c 22-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Implement and attach the BSR and BSF instructions.

5331:8d8aaad0bc36 21-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fill out group17 in the decoder.

5326:7e4cef0e528b 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Redo the bit test instructions.

5325:f55260052610 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the wrmsr instruction.

5322:db50c4044662 12-Jan-2008 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the general IO instructions dataSize.

5307:e27f5a64f459 03-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Please excuse my dear Aunt Sally. (precedence bug)

5306:79cedb731af5 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make sure the memory index is calculated using the address size for bit test instructions.

5305:8b379ad9406d 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy/paste mistake where the bit test instructions were using an immediate where they should use a register.

5302:a1c79b171e23 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the 0xA0-0xA3 versions of mov use the right sized immediates.

5297:4e2607ff906f 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a copy paste error in the bts microcode.

5296:5caa774215cd 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement mov from control register.

5295:5268691561b4 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: First crack at far returns. This is grossly approximate.

5294:7222bdaed33b 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Reorganize segmentation and implement segment selector movs.

5293:5ea2a6dc8f17 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the "fault" microop predicated.

5292:a26311673ef0 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LIDT instruction.

5291:5d38610cff05 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the lgdt instruction.

5290:7dc3e8ee0a22 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement wrbase and wrlimit for loading pseudo descriptors.

5289:ca5390e654b8 02-Dec-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Separate the effective seg base and the "hidden" seg base.

5246:21f29e99e021 13-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make microcode use presegmentation RIPs and the rest of m5 use post segmentation RIPS.

5243:4228b7b5704b 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a stupid typo where WRMSR and RDMSR were switched, and add a debug statement.

5241:a6602acdd046 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the wrcr microop which writes a control register, and some control register work.

5240:6dc723c9c6a9 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement some bit testing instructions.

5239:0920dfb94514 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Change the meaning of the sext and zext width operand, and make sext set zext if the sign bit is 0.

5238:95f494fd38bd 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out the opcode groups for two byte opcodes.

5232:d3801ea2792e 12-Nov-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Various fixes to indexing segmentation related registers

5188:974af6059943 30-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Compile fixes for 32 bit/debug/opt.

5179:9ea5593e01f2 22-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Use the cda microop where appropriate. The ENTER instruction still needs these.

5178:8914ea55a0c6 22-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the cda microop which checks if an address is legal to write to.

5176:43fb805e1b85 21-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start using the stupd microop, and update statistics accordingly.

5175:ee904e392de2 21-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the stupd microop ("store with update", not "stupid") and use it in ENTER.

5174:73a760aa0129 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the PUSHF, POPF, SAHF, and LAHF instructions.

5173:07204d59a328 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Impelement the HLT instruction and fix the "halt" microop.

5172:4f0e76579e7c 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a "halt" microop.

5171:eab735dc951d 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ENTER instruction. This could probably be optimized by cleaning up the indexing in the main loop.

5168:0fee957f6842 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Replace "group10" placeholder with the corresponding instructions in the decoder.

5167:3668fc87f144 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the string IO instructions, ins and outs.

5166:d749d156ce52 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the undocumented SALC instruction which sets AL to 0xFF if CF=1 and 0x00 otherwise.

5165:ce7b4b8a24c5 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the XLAT instruction.

5164:c2124685af1d 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the BOUND instruction.

5163:f08b480df4c3 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the "fault" microop predicated.

5162:5af26efb306e 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make "Inst" the default format instead of WarnUnimpl for one byte opcodes.

5161:e7334f2d7bef 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the in/out instructions. These will still need support from the TLB and memory system.

5160:ada1b67c97ab 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the LOOP instructions.

5159:31547ed6b8b5 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Attach the CMC instruction to the decoder.

5158:8cf2433105ff 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented the jrcx instruction.

5157:9c6c153af4b1 19-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make wrip sign extend its second operand.

5151:dec27c6c2b3b 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Added some new versions of MOV and a new argument type tag.

5150:4b5a97744185 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented LODS.

5149:356e00996637 12-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MSR reads and writes and the wrsmr and rdmsr instructions.
There are no priviledge checks, so these instructions will all work in all
modes.

5145:e0e56dded499 09-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of BasicOperate format which wasn't used and referred to SparcStaticInst

5138:069bbeae1ef8 07-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Significantly filled out misc regs.

5125:62bd932bcb0b 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Distinguish between the rep and repe prefixes.
STOS and MOVS only accept the rep prefix which always loops until rcx becomes
0. The other string instructions accept repe (same encoding as rep) and repne
which also check the condition code flags each iteration.

5123:cd30bb46e146 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix places where movfp was used incorrectly.

5122:b0527f379eb5 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the movfp microop.

5121:a5f3cfdc4ee5 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix x87 floating point stack register indexing.

5119:a4469f2919f3 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put ldst into the microcode (the earlier changeset didn't really).
Also clean things up as much as possible so that faulting won't break an
instruction. More microops which verify addresses are needed.

5118:f1b1cb6d0fbe 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the ldst microop and put it in existing microcode where appropriate.

5117:b422964a705c 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix up the microcode for the FST and FSTP instructions.

5116:91881e9404de 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Get rid of a hack for ruflag which is no longer necessary.

5115:fa8e5c5ab419 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Allow logic instructions to set ECF as well as CF.

5114:edcdf9b908ec 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add classes for the actual x86 faults.

5113:a377765c0d4a 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in another version of the XCHG instruction.

5112:fccb2f791196 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement MOVS

5111:65afc8009c08 03-Oct-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement STOS.

5084:675cb680830f 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the fld, fst, and fstp instructions.

5083:49559a8060e8 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Move the fp microops to their own file with their own base classes in C++ and python.

5082:82dd253231c8 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put in the foundation for x87 stack based fp registers.

5081:2ccce8600a9d 19-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Put in stubs for x87, 64 bit and 128 bit SIMD instruction microcode.


/gem5/src/arch/x86/SConscript
insts/__init__.py
insts/arithmetic/__init__.py
insts/arithmetic/add_and_subtract.py
insts/arithmetic/increment_and_decrement.py
insts/arithmetic/multiply_and_divide.py
insts/cache_and_memory_management.py
insts/compare_and_test/__init__.py
insts/compare_and_test/bit_scan.py
insts/compare_and_test/bit_test.py
insts/compare_and_test/bounds.py
insts/compare_and_test/compare.py
insts/compare_and_test/set_byte_on_condition.py
insts/compare_and_test/test.py
insts/control_transfer/__init__.py
insts/control_transfer/call.py
insts/control_transfer/conditional_jump.py
insts/control_transfer/interrupts_and_exceptions.py
insts/control_transfer/jump.py
insts/control_transfer/loop.py
insts/control_transfer/xreturn.py
insts/data_conversion/__init__.py
insts/data_conversion/ascii_adjust.py
insts/data_conversion/bcd_adjust.py
insts/data_conversion/endian_conversion.py
insts/data_conversion/extract_sign_mask.py
insts/data_conversion/sign_extension.py
insts/data_conversion/translate.py
insts/data_transfer/__init__.py
insts/data_transfer/conditional_move.py
insts/data_transfer/move.py
insts/data_transfer/stack_operations.py
insts/data_transfer/xchg.py
insts/flags/__init__.py
insts/flags/load_and_store.py
insts/flags/push_and_pop.py
insts/flags/set_and_clear.py
insts/general_purpose/__init__.py
insts/general_purpose/arithmetic/__init__.py
insts/general_purpose/arithmetic/add_and_subtract.py
insts/general_purpose/arithmetic/increment_and_decrement.py
insts/general_purpose/arithmetic/multiply_and_divide.py
insts/general_purpose/cache_and_memory_management.py
insts/general_purpose/compare_and_test/__init__.py
insts/general_purpose/compare_and_test/bit_scan.py
insts/general_purpose/compare_and_test/bit_test.py
insts/general_purpose/compare_and_test/bounds.py
insts/general_purpose/compare_and_test/compare.py
insts/general_purpose/compare_and_test/set_byte_on_condition.py
insts/general_purpose/compare_and_test/test.py
insts/general_purpose/control_transfer/__init__.py
insts/general_purpose/control_transfer/call.py
insts/general_purpose/control_transfer/conditional_jump.py
insts/general_purpose/control_transfer/interrupts_and_exceptions.py
insts/general_purpose/control_transfer/jump.py
insts/general_purpose/control_transfer/loop.py
insts/general_purpose/control_transfer/xreturn.py
insts/general_purpose/data_conversion/__init__.py
insts/general_purpose/data_conversion/ascii_adjust.py
insts/general_purpose/data_conversion/bcd_adjust.py
insts/general_purpose/data_conversion/endian_conversion.py
insts/general_purpose/data_conversion/extract_sign_mask.py
insts/general_purpose/data_conversion/sign_extension.py
insts/general_purpose/data_conversion/translate.py
insts/general_purpose/data_transfer/__init__.py
insts/general_purpose/data_transfer/conditional_move.py
insts/general_purpose/data_transfer/move.py
insts/general_purpose/data_transfer/stack_operations.py
insts/general_purpose/data_transfer/xchg.py
insts/general_purpose/flags/__init__.py
insts/general_purpose/flags/load_and_store.py
insts/general_purpose/flags/push_and_pop.py
insts/general_purpose/flags/set_and_clear.py
insts/general_purpose/input_output/__init__.py
insts/general_purpose/input_output/general_io.py
insts/general_purpose/input_output/string_io.py
insts/general_purpose/load_effective_address.py
insts/general_purpose/load_segment_registers.py
insts/general_purpose/logical.py
insts/general_purpose/no_operation.py
insts/general_purpose/processor_information.py
insts/general_purpose/rotate_and_shift/__init__.py
insts/general_purpose/rotate_and_shift/rotate.py
insts/general_purpose/rotate_and_shift/shift.py
insts/general_purpose/semaphores.py
insts/general_purpose/string/__init__.py
insts/general_purpose/string/compare_strings.py
insts/general_purpose/string/load_string.py
insts/general_purpose/string/move_string.py
insts/general_purpose/string/scan_string.py
insts/general_purpose/string/store_string.py
insts/general_purpose/system_calls.py
insts/input_output/__init__.py
insts/input_output/general_io.py
insts/input_output/string_io.py
insts/load_effective_address.py
insts/load_segment_registers.py
insts/logical.py
insts/no_operation.py
insts/processor_information.py
insts/rotate_and_shift/__init__.py
insts/rotate_and_shift/rotate.py
insts/rotate_and_shift/shift.py
insts/semaphores.py
insts/simd128/__init__.py
insts/simd128/floating_point/__init__.py
insts/simd128/floating_point/arithmetic/__init__.py
insts/simd128/floating_point/arithmetic/addition.py
insts/simd128/floating_point/arithmetic/division.py
insts/simd128/floating_point/arithmetic/horizontal_addition.py
insts/simd128/floating_point/arithmetic/horizontal_subtraction.py
insts/simd128/floating_point/arithmetic/multiplication.py
insts/simd128/floating_point/arithmetic/reciprocal_estimation.py
insts/simd128/floating_point/arithmetic/reciprocal_square_root.py
insts/simd128/floating_point/arithmetic/simultaneous_addition_and_subtraction.py
insts/simd128/floating_point/arithmetic/square_root.py
insts/simd128/floating_point/arithmetic/subtraction.py
insts/simd128/floating_point/compare/__init__.py
insts/simd128/floating_point/compare/compare_and_write_mask.py
insts/simd128/floating_point/compare/compare_and_write_minimum_or_maximum.py
insts/simd128/floating_point/compare/compare_and_write_rflags.py
insts/simd128/floating_point/data_conversion/__init__.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_floating_point.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_gpr_integer.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_mmx_integer.py
insts/simd128/floating_point/data_conversion/convert_floating_point_to_xmm_integer.py
insts/simd128/floating_point/data_reordering/__init__.py
insts/simd128/floating_point/data_reordering/shuffle.py
insts/simd128/floating_point/data_reordering/unpack_and_interleave.py
insts/simd128/floating_point/data_transfer/__init__.py
insts/simd128/floating_point/data_transfer/move.py
insts/simd128/floating_point/data_transfer/move_mask.py
insts/simd128/floating_point/data_transfer/move_non_temporal.py
insts/simd128/floating_point/data_transfer/move_with_duplication.py
insts/simd128/floating_point/logical/__init__.py
insts/simd128/floating_point/logical/andp.py
insts/simd128/floating_point/logical/exclusive_or.py
insts/simd128/floating_point/logical/orp.py
insts/simd128/integer/__init__.py
insts/simd128/integer/arithmetic/__init__.py
insts/simd128/integer/arithmetic/addition.py
insts/simd128/integer/arithmetic/average.py
insts/simd128/integer/arithmetic/multiplication.py
insts/simd128/integer/arithmetic/multiply_add.py
insts/simd128/integer/arithmetic/subtraction.py
insts/simd128/integer/arithmetic/sum_of_absolute_differences.py
insts/simd128/integer/compare/__init__.py
insts/simd128/integer/compare/compare_and_write_mask.py
insts/simd128/integer/compare/compare_and_write_minimum_or_maximum.py
insts/simd128/integer/data_conversion/__init__.py
insts/simd128/integer/data_conversion/convert_gpr_integer_to_floating_point.py
insts/simd128/integer/data_conversion/convert_integer_to_floating_point.py
insts/simd128/integer/data_conversion/convert_mmx_integer_to_floating_point.py
insts/simd128/integer/data_reordering/__init__.py
insts/simd128/integer/data_reordering/extract_and_insert.py
insts/simd128/integer/data_reordering/pack_with_saturation.py
insts/simd128/integer/data_reordering/shuffle.py
insts/simd128/integer/data_reordering/unpack_and_interleave.py
insts/simd128/integer/data_transfer/__init__.py
insts/simd128/integer/data_transfer/move.py
insts/simd128/integer/data_transfer/move_mask.py
insts/simd128/integer/data_transfer/move_non_temporal.py
insts/simd128/integer/logical/__init__.py
insts/simd128/integer/logical/exclusive_or.py
insts/simd128/integer/logical/pand.py
insts/simd128/integer/logical/por.py
insts/simd128/integer/save_and_restore_state/__init__.py
insts/simd128/integer/save_and_restore_state/save_and_restore_control_and_status.py
insts/simd128/integer/save_and_restore_state/save_and_restore_state.py
insts/simd128/integer/shift/__init__.py
insts/simd128/integer/shift/left_logical_shift.py
insts/simd128/integer/shift/right_arithmetic_shift.py
insts/simd128/integer/shift/right_logical_shift.py
insts/simd64/__init__.py
insts/simd64/floating_point/__init__.py
insts/simd64/floating_point/arithmetic/__init__.py
insts/simd64/floating_point/arithmetic/accumulation.py
insts/simd64/floating_point/arithmetic/addition.py
insts/simd64/floating_point/arithmetic/multiplication.py
insts/simd64/floating_point/arithmetic/reciprocal_estimation.py
insts/simd64/floating_point/arithmetic/reciprocal_square_root.py
insts/simd64/floating_point/arithmetic/subtraction.py
insts/simd64/floating_point/compare/__init__.py
insts/simd64/floating_point/compare/compare_and_write_mask.py
insts/simd64/floating_point/compare/compare_and_write_minimum_or_maximum.py
insts/simd64/floating_point/data_conversion.py
insts/simd64/integer/__init__.py
insts/simd64/integer/arithmetic/__init__.py
insts/simd64/integer/arithmetic/addition.py
insts/simd64/integer/arithmetic/average.py
insts/simd64/integer/arithmetic/multiplication.py
insts/simd64/integer/arithmetic/multiply_add.py
insts/simd64/integer/arithmetic/subtraction.py
insts/simd64/integer/arithmetic/sum_of_absolute_differences.py
insts/simd64/integer/compare/__init__.py
insts/simd64/integer/compare/compare_and_write_mask.py
insts/simd64/integer/compare/compare_and_write_minimum_or_maximum.py
insts/simd64/integer/data_conversion.py
insts/simd64/integer/data_reordering/__init__.py
insts/simd64/integer/data_reordering/extract_and_insert.py
insts/simd64/integer/data_reordering/pack_with_saturation.py
insts/simd64/integer/data_reordering/shuffle_and_swap.py
insts/simd64/integer/data_reordering/unpack_and_interleave.py
insts/simd64/integer/data_transfer/__init__.py
insts/simd64/integer/data_transfer/move.py
insts/simd64/integer/data_transfer/move_mask.py
insts/simd64/integer/data_transfer/move_non_temporal.py
insts/simd64/integer/exit_media_state.py
insts/simd64/integer/logical/__init__.py
insts/simd64/integer/logical/exclusive_or.py
insts/simd64/integer/logical/pand.py
insts/simd64/integer/logical/por.py
insts/simd64/integer/save_and_restore_state.py
insts/simd64/integer/shift/__init__.py
insts/simd64/integer/shift/left_logical_shift.py
insts/simd64/integer/shift/right_arithmetic_shift.py
insts/simd64/integer/shift/right_logical_shift.py
insts/sse/__init__.py
insts/sse/add_and_subtract.py
insts/sse/compare.py
insts/sse/convert.py
insts/sse/logical.py
insts/sse/move.py
insts/sse/multiply_and_divide.py
insts/sse/square_root.py
insts/string/__init__.py
insts/string/compare_strings.py
insts/string/load_string.py
insts/string/move_string.py
insts/string/scan_string.py
insts/string/store_string.py
insts/system_calls.py
insts/x87/__init__.py
insts/x87/arithmetic/__init__.py
insts/x87/arithmetic/addition.py
insts/x87/arithmetic/change_sign.py
insts/x87/arithmetic/division.py
insts/x87/arithmetic/multiplication.py
insts/x87/arithmetic/partial_remainder.py
insts/x87/arithmetic/round.py
insts/x87/arithmetic/square_root.py
insts/x87/arithmetic/subtraction.py
insts/x87/compare_and_test/__init__.py
insts/x87/compare_and_test/classify.py
insts/x87/compare_and_test/floating_point_ordered_compare.py
insts/x87/compare_and_test/floating_point_unordered_compare.py
insts/x87/compare_and_test/integer_compare.py
insts/x87/compare_and_test/test.py
insts/x87/control/__init__.py
insts/x87/control/clear_exceptions.py
insts/x87/control/initialize.py
insts/x87/control/save_and_restore_x87_control_word.py
insts/x87/control/save_and_restore_x87_environment.py
insts/x87/control/save_x87_status_word.py
insts/x87/control/wait_for_exceptions.py
insts/x87/data_transfer_and_conversion/__init__.py
insts/x87/data_transfer_and_conversion/conditional_move.py
insts/x87/data_transfer_and_conversion/convert_and_load_or_store_bcd.py
insts/x87/data_transfer_and_conversion/convert_and_load_or_store_integer.py
insts/x87/data_transfer_and_conversion/exchange.py
insts/x87/data_transfer_and_conversion/extract.py
insts/x87/data_transfer_and_conversion/load_or_store_floating_point.py
insts/x87/load_constants/__init__.py
insts/x87/load_constants/load_0_1_or_pi.py
insts/x87/load_constants/load_logarithm.py
insts/x87/no_operation.py
insts/x87/stack_management/__init__.py
insts/x87/stack_management/clear_state.py
insts/x87/stack_management/stack_control.py
insts/x87/transcendental_functions/__init__.py
insts/x87/transcendental_functions/logarithmic_functions.py
insts/x87/transcendental_functions/trigonometric_functions.py
5077:4c25f95fa600 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix how ECF is computed in genFlags, and get rid of some duplicate code.

5076:956a475dddea 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the shift and rotate instructions set the carry flag(s) and overflow flags like they're supposed to.

5075:4ae876c5037d 13-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Total overhaul of the division instructions and microops.

5065:63321c544086 10-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Move a comment to be next to the code it describes.

5063:8eb72b1bd3c6 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Rework the multiplication microops so that they work like they would in the patent.

5062:4c98f8cdcc11 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make signed multiplication do something different from unsigned.

5061:2ac90228c205 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make signed versions of partial register values available to microops.

5060:28b30e3e428c 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Correct how the hi portion of a product is computed.

5059:33478a26f73e 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a square root microop and the SSE sqrt instruction.

5058:be23162b7370 06-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add SSE comparison instructions and microops and move some FP microops to be with the other ones.

5052:791ae1b04d72 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement an SSE xor microop and instruction.

5051:6bdf2a0ae4fb 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the movfp microop use FloatRegBits instead of FloatRegs.
This fixes a problem where interpreting arbitrary bits as floating point would
change what the value was. These values are legitimate because the fp
registers could be used to move around arbitrary data.

5048:59b695cf3799 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the fp arithmetic instructions. Stale python made it work before.

5047:4a3593bec248 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement some SSE fp microops and instructions.

5046:da031ef02439 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add some SSE floating point/integer conversion microops.

5045:bf06c4d63bf4 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add floating point micro registers.

5044:b5a2bcd3d9a3 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a typo in the microassembly for the cqo instruction.

5043:a69b7f532f79 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement idiv and propogate the mul corner case fix.

5042:bc2c08abe249 05-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix a corner case where mul would overwrite an original register value it still needed.

5040:126e4510b5bb 01-Sep-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Major rework of how regop microops are generated.
The new implementation uses metaclass, and gives a lot more precise control
with a lot less verbosity. The flags/no flags reg/imm variants are all handled
by the same python class now which supplies a constructor to the right C++
class based on context.

5032:17f771e6b2f2 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sra microop to get the sign bit from the right operand.

5031:53b9e86e652d 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movaps instruction.

5030:bd8f65d4ac59 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movsd instruction.

5029:68c3f3be8c8a 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the movlpd instruction.

5028:b9d42ad1f94e 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add an fp move microop.

5027:e96b8a4f4d96 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add load and store microops that use the fp registers.

5026:46dd8d55f6c9 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add operands to handle floating point registers.

5025:5c264911b7a9 29-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Flesh out register indexing constants.

5022:476ccbb674ee 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: More two byte opcode decoding. I missed two groups in the last changeset.

5020:d34fd894a6e5 28-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: More fully decode two byte opcodes.
This includes the most of the SSE stuff, but not some of the "groups" of
instructions.

5011:6333ea094184 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the Ruflag microop work correctly, and make the code a little clearer.

5010:e53f4e0bb2ac 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Return values for some cpuid functions that match what my development machine returns.

5009:78d53ea88c74 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make the microassembler accept lines which are just labels.
The labels on these lines will be associated with whatever the next microop
is.

5008:2d852642081e 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make cpuid actually consider the eax parameter and return different values.

5007:121fa5d20f59 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix the sign extension microop so it extends zeros correctly.

5006:46bde2e856dd 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement cmps (string compare)

5005:a7d60f1aa908 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make shift instructions set some of the flags they're supposed to.
The flag mechanism for microops needs to be fleshd out a little more to allow
for custom flag calculation methods for certain microops. Shift is an example
where the rules for calculating OF and CF are unique.

5002:1b540e93ad34 26-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Remove x86 code that attempted to fix misaligned accesses.

4953:1181cf10e11e 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implemented and hooked in SCAS (scan string)
Fixed the asz assembler symbol.
Adjusted the condion checks to have appropriate options.
Implemented the SCAS microcode.
Attached SCAS into the decoder.

4952:2d7c40dd10bd 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a format to handle string instructions which can use the repe and repne prefixes.

4951:1b51fb0c3983 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Overhaul of ruflags to get it to work correctly.

4950:f5f19784acf1 07-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make a microcode branch microop.
Also some touch up for ruflag.

4906:d3e6e6c2f399 22-Jul-2007 Steve Reinhardt <stever@eecs.umich.edu>

Merge more changes in from head.

4868:99d4946469a1 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement microops and instructions that manipulate the flags register.

4867:2de05bc73640 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make 64 bit unaligned accesses work as well as the other sizes.
There is a fundemental flaw in how unaligned accesses are supported, but this
is still an improvement.

4865:4f4a7fe48b5b 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make fixed register operands ignore register index extensions from the REX prefix.
The only cases where this was the correct behavior are now handled with the
"B" operand type, and doing things this way was breaking some instructions,
notably a shift.

4864:a78c58ce5499 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement the cmpxchg instruction.

4863:b6dacc9a39ff 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Start implementing segmentation support.
Make instructions observe segment prefixes, default segment rules, segment
base addresses.
Also fix some microcode and add sib and riprel "keywords" to the x86
specialization of the microassembler.

4861:d73032e1dca0 04-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add the arch_prctl system call and fix up some microcoding.
The arch_prctl system call is used to set and get the FS and GS segment
bases. The FS segment is use for TLS, so glibc needs to be able to set it
up.

4834:9480bde3ae6a 01-Aug-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix for compilation bug with new cache code.

4828:768d4cf6b0dc 31-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a flag to indicate an instruction triggers a syscall in SE mode.

4827:d4ea1bbfdbc3 31-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add operand type information to the fnstcw and fldw instruction placeholders.
These are the only floating point instructions that get used in my simple hello world test. These instructions are for setting up the floating point control register. Their not being implemented doesn't affect anything because floating point isn't used.

4825:93a992aa87f6 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add decoding for x87 floating point.

4824:32dac1e3bcd8 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Attach the "DIV" instruction implementation to the decoder.

4823:9bd81e315a34 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Remove a naming conflict between the register index parameters and the "picked" register values.

4819:4d21a72b55ed 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Set up RIP relative LEA instructions operands correctly.

4818:f05a634443c5 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement unsigned divide. The non-byte version ignores rdx which it shouldn't.

4817:4888643b143c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Allow RIP relative decode on -all- memory forms of operands.

4816:13391cf96e9c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Take into account the regular registers and the microcode registers when decided whether or not to fold.

4814:d398decc8de8 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in the new instructions.

4811:f4c050c1edeb 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement a stub CPUID function which is hardcode to return certain values.

4810:27acbaf1d4e3 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Force jumps to use 64 bit operand size.

4809:ee82bc15a483 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make instructions use pick, and implement/adjust some multiplication microops and instructions.

4806:e0c57a8e197c 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: missed a file which adds a "fold" bit.

4805:cc9a5798e4d1 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the register indices use the appropriate "fold" bit.

4804:4a707cb7065b 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make disassembly use the final register index. Add bits to indicate whether or not register indexes should be "folded".

4802:512e30d94584 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement LEAVE

4801:370cc342f031 30-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add a bitfield to indicate whether or not an REX prefix was present.

4798:85351424da98 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make logic instructions flag setting work.
The instructions now ask for the appropriate flags to be set, and the microops do the "right thing" with the CF and OF flags, namely zero them.

4797:f26c5c593b7a 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make arithmetic instructions set the appropriate flags.

4792:ccab7ba2c6e5 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Make limm use merge and allow overriding the data size.

4788:2128419a6dd2 29-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix popa and push with the stack pointer.
POPA used st instead of ld, and it didn't skip rsp. push rsp needs to store the -original- value of the stack pointer.

4771:d4b92447a598 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Hook in shift and rotate by one instructions, and NOT.

4770:52a479af7b14 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix pc relative versions of add and subtract.

4769:3e3254436181 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement rotate-by-one instructions, and make register rotates use registers.

4768:ce8d118a1fa7 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Implement shift-by-one instructions, and make register shifts use registers.

4767:5e55d650692e 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Add functions to read and write to an exec context.
These functions take care of calling the thread contexts read and write functions with the right sized data type, and handle unaligned accesses.

4766:a708d14c44bf 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

X86: Fix carry calculation for subtraction based microops.
The carry flag should be calculated using the -complement- of the second operand, not it's negation. The carry in which is part of computing the 2's complement may induce a carry, but if you've already caused the carry before you get the carry computing logic involved, it will miss it.

4764:3cc6c2bddf1c 27-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement NOT

4760:0116da6a4963 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook in a bunch of new instructions, fix a few minor bugs, and expand out one of the prefix multiplexed opcode groups.

4756:a7083c283274 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the shift and rotate microops mask the shift/rotate amount correctly.

4755:b7b9c2e654a5 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate shifts. Implement register shifts.

4754:6550874ebca8 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix immediate rotates and add register ones.

4753:0b7f5f77ee84 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Clean out part of an old comment.

4752:fc6ee2904dad 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cmov.

4751:e1f5eee86899 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement cdqe and cqo, which are also called cbw and cwde, and cwd and cdq respectively, depending on the operand size.

4750:fb23e50d24cd 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement setcc.

4749:1ee5f5cd8001 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment.

4748:4e34bb56cfd4 24-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an old comment

4747:0971cd0cf1da 23-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement pusha, popa, three operand imul, hook them into the decoder, and clean up the decoder a little.

4746:7960a6867f55 22-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the operand size reflect the size specifier on the operand tags, and implement NEG

4743:0e355a30d805 22-Jul-2007 Steve Reinhardt <stever@eecs.umich.edu>

Merge Gabe's changes with mine.

4734:a71b1b6b0678 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented and hooked in xchg, rotate with carry, and ret instructions

4733:b0785fa2d7b6 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement rotate with carry microops.

4732:9fdd1a5ab692 21-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed the distinction between far and near versions of jmp, call and ret. Implemented some shifts, rotates, and pushes.

4730:77e3e9b15e7e 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement UD2 and replace the place holder in the decoder.

4728:d60b98171bef 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement adc and sbb instructions and microops.

4727:8a6b7746df57 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the rest of the conditional jump instructions and hook them into the decoder.

4726:c474eca232e4 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the decoder take advantage of the new "B" operand format which takes a register index from the opcode itself.

4725:441c280b5936 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Define and fill out a lot of different instructions and instruction versions. Added two of the shift microops.

4724:ba9aff3fe5d7 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook in newly implemented instructions.

4723:b663328cf5a1 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Comment, implement, fix, and trim the move microassembly.

4722:0659a6c26d3c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement jnbe.

4721:0399ca728102 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Appended _NEAR to the near version of call and return.

4720:15cb65a86e5a 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make load and store ops use the appropriate sized data access.

4719:6e85e2d8b07c 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the increment and decrement instructions, and the two operand form of signed multiplication.

4717:040769cb51b9 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a bitfield to decode based on what prefixes are used.

4716:68cc9f2d4f73 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a parameter type to read a register index from the opcode itself.

4714:5e9f906ea0a0 20-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix carry flag for subtracts, and clean up code slightly.

4712:79b4c64296ce 19-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

x86 fixes
Make the emulation environment consider the rex prefix.
Implement and hook in forms of j, jmp, cmp, syscall, movzx
Added a format for an instruction to carry a call to the SE mode syscalls system
Made memory instructions which refer to the rip do so directly
Made the operand size overridable in the microassembly
Made the "ext" field of register operations 16 bits to hold a sparse encoding of flags to set or conditions to predicate on
Added an explicit "rax" operand for the syscall format
Implemented syscall returns.

4711:dec658eb8f49 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Check for the two opcode prefix correctly and add in some instructions.

4710:8f0c44a432c8 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook near returns into the decoder.

4709:884a54d8d22f 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement near returns.

4708:efa060dd6f3c 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make instructions that conditionally set registers set them to their old value if they don't actually execute.

4706:4ede9a05bb42 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make store microops actually store instead of load.

4705:7fc758c834c0 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a comment to refer to the right type of instruction.

4704:09303c75d67a 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the panic in the "error" format for x86,

4703:4158cad49287 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement some forms of add.

4702:8d3a38ec94d9 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the operand types in a section of the decoder.

4701:6086c14956da 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make the data size used by regops overridable in the microassembly.

4699:ee46bb3b2fd3 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Hook x86 nop into the decoder.

4697:8d9b2d777c61 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the x86 nop to be a "fault" microop which returns "NoFault".

4696:459853ed322c 18-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add a generateDisassembly function to the MicroFault StaticInst.

4693:ca44a1014212 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make disassembled x86 register indices reflect their size.
This doesn't handle high byte register accesses. It also highlights the fact that address size isn't actually being calculated, and that the size a microop uses needs to be overridable from the microassembly.

4692:8536c20cdc5b 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implemented jnz.

4691:52ec6c3573f6 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Use limm to set up immediate value for subtract instruction.

4690:1f1a4393c47c 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Implement the jz instruction.

4689:51d601a6be95 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Make "test" set some condition codes.
It still needs to zero the overflow and carry flags to be correct.

4688:82d7cbf0e66d 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add in support for condition code flags.
Some microops can set the condition codes, and some of them can be predicated on them. Some of the codes aren't implemented because it was unclear from the AMD patent what they actually did. They are used with string instructions, but they use variables IP, DTF, and SSTF which don't appear to be documented.

4687:db7ca06d6e6a 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add in operand which holds the condition code bits of the flag register.

4686:6ee937c0c431 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Add symbols for each of the flags a microop could set and each condition it could check.

4685:e38f50632338 17-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Actually include miscregs.hh

4679:0b39fa8f5eb8 14-Jul-2007 Gabe Black <gblack@eecs.umich.edu>

Pull some hard coded base classes out of the isa description.

4620:5acc50eeacf7 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make symbols for regular registers.

4619:b914b33406b8 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an unnecessary include file.

4617:42cb778fbe66 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Use the new symbols to clean up the assembler.

4616:99c9f2cbc4a8 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Needed for last change set to work :P

4615:4ee8c5745c5d 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Define symbols for the x86 specialization of the microassembler.

4612:a29c0616839d 21-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in code that lays the ground work for setting flags.

4609:29b5f66fed1a 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement rip relative addressing and put in some missing loads and stores.

4606:e94aaf0b3355 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix a typo in one of the operand type tags.

4605:ffadb6f891a1 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Comment out some unnecessary debug output.

4601:38c989d15fef 20-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make memory instructions work better, add more macroop implementations, add an lea microop, move EmulEnv into it's own .cc and .hh.

4595:5162e9a7728c 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

More faithfulness to what instructions should work in what modes, and added the MOVSXD instruction.

4592:520664dfb26f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make instructions that are illegal in 64 bit mode not do the wrong thing in 64 bit mode. Also add in more versions of PUSH and POP, and a version of near CALL.

4590:5c3813b700a3 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Renovate the "fault" microop implementation.

4589:97c65c2bd53f 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the commented out versions of macroops which have been reimplemented. The comments are basically functioning like a todo list.

4587:2c9a2534a489 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of the immediate and displacement components of the EmulEnv struct and use them directly out of the instruction. The extra copies are conceptually realistic but are just innefficient as implemented. Also don't use the zeroeth microcode register for general storage since it's now the zero register, and implement a load and a store microops.

4586:597006d41ca8 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a stack size bitfield and expose the mode component of the ExtMachInst.

4585:ac00cf824ee8 19-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a function to print out segment names.

4582:963ea0dcf174 18-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of unnecessary output.

4581:23166f771fa4 18-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in incomplete pick and merge functions which read and write pieces of registers, and fill out microcode disassembly.

4576:31f715613103 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix limm.

4575:d0017efdfa02 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Implement a handful more instructions and differentiate macroops based on the operand types they expect.

4570:24eda664bafa 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make POP special case its dataSize to default to 64 bits in 64 bit mode.

4568:65dcd045da1d 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of an unnecessary debug statement.

4567:5c7b9832235d 14-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of some debug output and let macroops set headers in their constructor. The intention is to allow them to modify the emulation environment struct before it's used to construct its microops.

4563:a2dab6654eee 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the operand type tag parser to recognize multi character register names.

4562:ebc2d9545634 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Partially implement "POP"

4561:ade4960f0832 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move load/store microops into their own file. They still don't do anything, though.

4560:d65c11cc31d7 13-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the immediate version of register operations, and get their name to show up correctly.

4559:f3ef61d0b992 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Minor comment fix up.

4548:1738b4f7bac8 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make use of some of the REX prefix.

4546:71382cde8725 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Flesh out the bitfields for prefixes.

4545:03725ca8b7ea 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add in MOV instructions.

4544:3a64c2c0f8e9 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up a comment that wasn't changed over to x86.

4543:4cbcab038791 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Get rid of unnecessary namespace prototype.

4542:f6ca2384b304 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Use objects to pass around output code, and fix/implement a few things.

src/arch/x86/isa/formats/multi.isa:
Make the formats use objects to pass around output code.

4541:da1910a0d731 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add an address size bitfield to the isa description and the ExtMachInst

4539:6eeeea62b7c4 12-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make microOp vs microop and macroOp vs macroop capitilization consistent.

src/arch/x86/isa/macroop.isa:
Make microOp vs microop and macroOp vs macroop capitilization consistent. Also fill out the emulation environment handling a little more, and use an object to pass around output code.
src/arch/x86/isa/microops/base.isa:
Make microOp vs microop and macroOp vs macroop capitilization consistent. Also adjust python to C++ bool translation.

4538:7665c5ecf99b 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix another outdated comment.

4537:01bac5417818 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Adjust a few more comments.

4535:51bf0993137e 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix up a potentially misleading comment.

4534:7035ff1aa521 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fix the formatting on a comment.

4533:126c53d7644a 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Clean up where files are included, and get rid of some cruft.

src/arch/x86/isa/main.isa:
Clean up where files are included.

4532:106c0fb74f7c 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Clean things up a little.

4529:5f32651bc10e 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Move the microcode assembly to a python package instead of isa_parser files. Also, the code is now a single string which runs through the microcode assembler rather than docstrings associated with classes named after each architectural level instruction.


insts/__init__.py
insts/arithmetic/__init__.py
insts/arithmetic/add_and_subtract.py
insts/arithmetic/increment_and_decrement.py
insts/arithmetic/multiply_and_divide.py
insts/cache_and_memory_management.py
insts/compare_and_test/__init__.py
insts/compare_and_test/bit_scan.py
insts/compare_and_test/bit_test.py
insts/compare_and_test/bounds.py
insts/compare_and_test/compare.py
insts/compare_and_test/set_byte_on_condition.py
insts/compare_and_test/test.py
insts/control_transfer/__init__.py
insts/control_transfer/call.py
insts/control_transfer/conditional_jump.py
insts/control_transfer/interrupts_and_exceptions.py
insts/control_transfer/jump.py
insts/control_transfer/loop.py
insts/control_transfer/xreturn.py
insts/data_conversion/__init__.py
insts/data_conversion/ascii_adjust.py
insts/data_conversion/bcd_adjust.py
insts/data_conversion/endian_conversion.py
insts/data_conversion/extract_sign_mask.py
insts/data_conversion/sign_extension.py
insts/data_conversion/translate.py
insts/data_transfer/__init__.py
insts/data_transfer/conditional_move.py
insts/data_transfer/move.py
insts/data_transfer/stack_operations.py
insts/flags/__init__.py
insts/flags/load_and_store.py
insts/flags/push_and_pop.py
insts/flags/set_and_clear.py
insts/input_output/__init__.py
insts/input_output/general_io.py
insts/input_output/string_io.py
insts/load_effective_address.py
insts/load_segment_registers.py
insts/logical.py
insts/no_operation.py
insts/processor_information.py
insts/rotate_and_shift/__init__.py
insts/rotate_and_shift/rotate.py
insts/rotate_and_shift/shift.py
insts/semaphores.py
insts/string/__init__.py
insts/string/compare_strings.py
insts/string/load_string.py
insts/string/move_string.py
insts/string/scan_string.py
insts/string/store_string.py
insts/system_calls.py
4528:f0b19ee67a7b 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Big changes to use the new microcode assembler.

4527:323c8068b597 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Fixed format arguments for XOR.

4526:4458edb6990d 08-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Add a bitfield to refer to the opSize member of the extMachInst.

4524:f051dcff22b3 04-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Make limm (load immediate) microop

4519:f8da6b45573f 04-Jun-2007 Gabe Black <gblack@eecs.umich.edu>

Reworking x86's microcode system. This is a work in progress, and X86 doesn't compile.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
src/arch/x86/isa/macroop.isa:
src/arch/x86/isa/main.isa:
src/arch/x86/isa/microasm.isa:
src/arch/x86/isa/microops/base.isa:
src/arch/x86/isa/microops/microops.isa:
src/arch/x86/isa/operands.isa:
src/arch/x86/isa/microops/regop.isa:
src/arch/x86/isa/microops/specop.isa:
Reworking x86's microcode system

4482:7ca486cfc7a6 31-May-2007 Gabe Black <gblack@eecs.umich.edu>

x86 work that hadn't been checked in.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
Give the "MOV" instruction the format of it's arguments. This will likely need to be completely overhauled in the near future.
src/arch/x86/predecoder.cc:
src/arch/x86/predecoder.hh:
Make the predecoder explicitly reset itself rather than counting on it happening naturally.
src/arch/x86/predecoder_tables.cc:
Fix the immediate size table
src/arch/x86/regfile.cc:
nextnpc is bogus

4372:14d42d795242 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Include the new GenFault microop.

4371:c5003760793e 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Reworked x86 a bit

4369:5b1ad8322f0e 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Changed some instruction names to be in all caps, and "implemented" move to test the stub code for instructions.

4366:63cf7e8826b2 10-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Added a class which lets you manipulate all the strings returned by the parser as a unit.

4349:b223256d0a79 08-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Accidentally didn't save when moving the specialization code out of here.

4348:5c21bdb46e6d 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Move the instruction specialization stuff out of the microassembler file, and added some comments to main.isa

4347:31b270c3e2f9 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Merge zizzer.eecs.umich.edu:/bk/newmem
into ahchoo.blinky.homelinux.org:/home/gblack/m5/newmem-x86

4344:174e31456abe 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Consolidated the microcode assembler to help separate it from more x86-centric stuff.

4343:3f11bcf873b3 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Refactored the x86 isa description some more. There should be more seperation between x86 specific parts, and those parts which are implemented in the isa description but could eventually be moved elsewhere.

4341:1897c85e3542 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Add in a stub merging function

4340:c0d96f28d854 06-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Clean up the macroop code.

4338:24d31b35bcf9 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

The process of going from an instruction definition to an instruction to be returned by the decoder has been fleshed out more. The following steps describe how an instruction implementation becomes a StaticInst.

1. Microops are created. These are StaticInsts use templates to provide a basic form of polymorphism without having to make the microassembler smarter.
2. An instruction class is created which has a "templated" microcode program as it's docstring. The template parameters are refernced with ^ following by a number.
3. An instruction in the decoder references an instruction template using it's mnemonic. The parameters to it's format end up replacing the placeholders. These parameters describe a source for an operand which could be memory, a register, or an immediate. It it's a register, the register index is used. If it's memory, eventually a load/store will be pre/postpended to the instruction template and it's destination register will be used in place of the ^. If it's an immediate, the immediate is used. Some operand types, specifically those that come from the ModRM byte, need to be decoded further into memory vs. register versions. This is accomplished by making the decode_block text for these instructions another case statement based off ModRM.
4. Once all of the template parameters have been handled, the instruction goes throw the microcode assembler which resolves labels and creates a list of python op objects. If an operand is a register, it uses a % prefix, an immediate uses $, and a label uses @. If the operand is just letters, numbers, and underscores, it can appear immediately after the prefix. If it's not, it can be encolsed in non nested {}s.
5. If there is a single "op" object (which corresponds to a single microop) the decoder is set up to return it directly. If not, a macroop wrapper is created around it.

In the future, I'm considering seperating the operand type specialization from the template substitution step. A problem this introduces is that either the template arguments need to be kept around for the specialization step, or they need to be re-extracted. Re-extraction might be the way to go so that the operand formats can be coded directly into the micro assembler template without having to pass them in as parameters. I don't know if that's actually useful, though.

src/arch/x86/isa/decoder/one_byte_opcodes.isa:
src/arch/x86/isa/microasm.isa:
src/arch/x86/isa/microops/microops.isa:
src/arch/x86/isa/operands.isa:
src/arch/x86/isa/microops/base.isa:
Implemented polymorphic microops and changed around the microcode assembler syntax.

4336:bd6ab22f8e11 04-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

Reworking how x86's isa description works. I'm adopting the following definitions to make figuring out what's what a little easier:

MicroOp: A single operation actually implemented in hardware.
MacroOp: A collection of microops which are executed as a unit.
Instruction: An architected instruction which can be implemented with a macroop or a microop.

4323:13ca4002d2ac 03-Apr-2007 Gabe Black <gblack@eecs.umich.edu>

A batch of changes and fixes. Macroops are now generated automatically, multiops do alot more of what they're supposed to (excluding memory operands), and microops are slightly more implemented.

4310:8f9d834f19bc 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Made the MultiOp format do a little more. It now sets up single microop instructions to return an instance of the right class. The code to decode register numbers and generate loads and stores still needs to be added. Also, a syntax for specifying operands as sources, destinations, or both needs to be established. Multipl microop instructions are also not handled, pending real macroop generation support.

4309:47807357f0d7 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add a microcode assembler. A microcode "program" is a series of statements. Each statement has an optional label at the beginning, a capitilized microcode class name which is roughly equivalent to a mnemonic in a regular ISA, and then an optional series of operands seperated by white space. The operands are either a decimal constant, a label, or a code fragment surrounded by non nested {}s. Labels are a letter or underscore followed by letters, underscores, or digits. The syntax for describing code segments might need to be changed if a need arrises to have {}s in the code itself.

4299:8f0635157ac4 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Fidget with the syntax of the MultiOp format in anticipation of making it actually work.

4298:a92aab35e34e 29-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add code to generate register and immediate based integer op microop classes.

4279:acc38276ca1d 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Add a junk operand. With no operands, the parser breaks.

4278:4233cadbe3c3 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Start implementing groups of instructions which do the same thing on different sets of inputs.

4276:f0030662ee2a 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Break out the one and two byte opcodes into different files. Also change what bits decode is done on to reflect where clumps of instructions are.

4275:8a37341c7507 21-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Missed a const

4182:5b2c0d266107 14-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Make the predecoder an object with it's own switched header file. Start adding predecoding functionality to x86.

src/arch/SConscript:
src/arch/alpha/utility.hh:
src/arch/mips/utility.hh:
src/arch/sparc/utility.hh:
src/cpu/base.hh:
src/cpu/o3/fetch.hh:
src/cpu/o3/fetch_impl.hh:
src/cpu/simple/atomic.cc:
src/cpu/simple/base.cc:
src/cpu/simple/base.hh:
src/cpu/static_inst.hh:
src/arch/alpha/predecoder.hh:
src/arch/mips/predecoder.hh:
src/arch/sparc/predecoder.hh:
Make the predecoder an object with it's own switched header file.

4158:a3fb9e29c6ce 05-Mar-2007 Gabe Black <gblack@eecs.umich.edu>

Stub decoder. This is probably even farther from finished than it looks...