#
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>
|
#
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.
|
#
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.
|
#
7087:fb8d5786ff30 |
|
24-May-2010 |
Nathan Binkert <nate@binkert.org> |
copyright: Change HP copyright on x86 code to be more friendly
|
#
6512:b19a86a6d424 |
|
17-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Turn the CMPXCHG8B microcode into a template and generate each variant.
|
#
6486:33faa9915d16 |
|
09-Aug-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the CMPXCHG8B/CMPXCHG16B instruction.
|
#
6097:842991b33990 |
|
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of XADD.
|
#
6094:28198ab3adec |
|
19-Apr-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement a locking version of CMPXCHG.
|
#
5815:18ed7aa8e8e1 |
|
25-Jan-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the xadd instruction.
|
#
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
|
#
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.
|
#
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.
|