Age | Commit message (Collapse) | Author |
|
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.
|
|
|
|
|
|
|
|
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.
|
|
|
|
This will reduce clutter in the source and hopefully speed up compilation.
|
|
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.
|
|
|
|
|
|
|
|
operands.
|
|
flags.
|
|
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.
|
|
This microop does a load, checks that a store would succeed, and locks the
requested address.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
--HG--
extra : convert_revision : 31db1ee082f6c3ca5443cba1eb335e408661ead2
|
|
--HG--
extra : convert_revision : 3d45da3a3fb38327582cfdfb72cfc4ce1b1d31af
|
|
--HG--
extra : convert_revision : afe20649180dd59ad0702b98f7293be6c9226359
|
|
it in ENTER.
--HG--
extra : convert_revision : 9151f701162d31ef26298497467c42b7b0ed85d5
|
|
There are no priviledge checks, so these instructions will all work in all
modes.
--HG--
extra : convert_revision : ff893eb569313d8aecbfffb47bcbd1c2d65cd393
|
|
appropriate.
--HG--
extra : convert_revision : f08bd725d07a501bb7a0ce91590b5d37db99c6f3
|
|
--HG--
extra : convert_revision : 153a055e888d8c47d59758a599dbd38f63008137
|
|
--HG--
extra : convert_revision : 42f68010e6498aceb7ed25da278093e99150e4df
|
|
There is a fundemental flaw in how unaligned accesses are supported, but this
is still an improvement.
--HG--
extra : convert_revision : 1c20b524ac24cd4a812c876b067495ee6a7ae29f
|
|
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.
--HG--
extra : convert_revision : be5a3b33d33f243ed6e1ad63faea8495e46d0ac9
|
|
--HG--
extra : convert_revision : 073c6db0796cd2c11b8293b382b438a2a959b821
|
|
These functions take care of calling the thread contexts read and write functions with the right sized data type, and handle unaligned accesses.
--HG--
extra : convert_revision : b4b59ab2b22559333035185946bae3eab316c879
|
|
--HG--
extra : convert_revision : 6b808586fab10ca433ef04b062bf701b906634b9
|
|
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.
--HG--
extra : convert_revision : ae84bd8c6a1d400906e17e8b8c4185f2ebd4c5f2
|
|
--HG--
extra : convert_revision : fe90f8adc96dd0e680cfa45e4c510a906046ae3d
|
|
--HG--
rename : src/arch/x86/isa/base.isa => src/arch/x86/isa/outputblock.isa
extra : convert_revision : 7954e7d5eea3b5966c9e273a08bcd169a39f380c
|
|
an lea microop, move EmulEnv into it's own .cc and .hh.
--HG--
extra : convert_revision : 1212b8463eab1c1dcba7182c487d1e9184cf9bea
|
|
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.
--HG--
extra : convert_revision : 0686296ca8b72940d961ecc6051063bfda1e932d
|
|
though.
--HG--
extra : convert_revision : 251763c614b9056c3ca7a85ef92c416552da893f
|