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> |
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. |
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". |
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. |
7622:b49144029ec8 |
23-Aug-2010 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Mark serializing macroops and regular instructions as such. |
7087:fb8d5786ff30 |
24-May-2010 |
Nathan Binkert <nate@binkert.org> |
copyright: Change HP copyright on x86 code to be more friendly |
6644:57fba079b7ff |
16-Sep-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix setting the busy bit in the task descriptor in LTR. |
6345:f9ae7c3a036c |
16-Jul-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Take limitted advantage of the compilers type checking for microop operands. |
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. |
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). |
5968:6f9f1438360a |
27-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Make instructions that use intseg preserve all 8 bytes of their addresses. |
5937:177534612ec0 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the lldt instruction. |
5933:8b9bc09b149c |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement CLTS. |
5930:ec124ac0984b |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Rename oszForPseudoDesc maxOsz to reflect its more general use. |
5927:5e3367b103da |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Do a merge for the zero extension microop. |
5902:7a323daa3df2 |
25-Feb-2009 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the LTR instruction. |
5683:e1a1d8bba254 |
13-Oct-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Implement the swapgs instruction. |
5418:501cb81c89df |
12-Jun-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Bypass unaligned access support for register addressed MSRs. |
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. |
5325:f55260052610 |
12-Jan-2008 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Fix the wrmsr instruction. |
5294:7222bdaed33b |
02-Dec-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Reorganize segmentation and implement segment selector movs. |
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. |
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. |
5173:07204d59a328 |
19-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Impelement the HLT instruction and fix the "halt" microop. |
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. |
5114:edcdf9b908ec |
03-Oct-2007 |
Gabe Black <gblack@eecs.umich.edu> |
X86: Add classes for the actual x86 faults. |
4730:77e3e9b15e7e |
20-Jul-2007 |
Gabe Black <gblack@eecs.umich.edu> |
Implement UD2 and replace the place holder in the decoder. |