mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-28 07:08:01 +08:00
x86: correct/improve TSX controls
TSXLDTRK takes RTM as a prereq. Additionally introduce an umbrella "tsx" extension option covering both RTM and HLE, paralleling the "abm" one we already have.
This commit is contained in:
@ -1050,7 +1050,8 @@ static const arch_entry cpu_arch[] =
|
|||||||
SUBARCH (lzcnt, LZCNT, LZCNT, false),
|
SUBARCH (lzcnt, LZCNT, LZCNT, false),
|
||||||
SUBARCH (popcnt, POPCNT, POPCNT, false),
|
SUBARCH (popcnt, POPCNT, POPCNT, false),
|
||||||
SUBARCH (hle, HLE, HLE, false),
|
SUBARCH (hle, HLE, HLE, false),
|
||||||
SUBARCH (rtm, RTM, RTM, false),
|
SUBARCH (rtm, RTM, ANY_RTM, false),
|
||||||
|
SUBARCH (tsx, TSX, TSX, false),
|
||||||
SUBARCH (invpcid, INVPCID, INVPCID, false),
|
SUBARCH (invpcid, INVPCID, INVPCID, false),
|
||||||
SUBARCH (clflush, CLFLUSH, CLFLUSH, false),
|
SUBARCH (clflush, CLFLUSH, CLFLUSH, false),
|
||||||
SUBARCH (nop, NOP, NOP, false),
|
SUBARCH (nop, NOP, NOP, false),
|
||||||
@ -1112,7 +1113,7 @@ static const arch_entry cpu_arch[] =
|
|||||||
SUBARCH (rdpru, RDPRU, RDPRU, false),
|
SUBARCH (rdpru, RDPRU, RDPRU, false),
|
||||||
SUBARCH (mcommit, MCOMMIT, MCOMMIT, false),
|
SUBARCH (mcommit, MCOMMIT, MCOMMIT, false),
|
||||||
SUBARCH (sev_es, SEV_ES, ANY_SEV_ES, false),
|
SUBARCH (sev_es, SEV_ES, ANY_SEV_ES, false),
|
||||||
SUBARCH (tsxldtrk, TSXLDTRK, TSXLDTRK, false),
|
SUBARCH (tsxldtrk, TSXLDTRK, ANY_TSXLDTRK, false),
|
||||||
SUBARCH (kl, KL, ANY_KL, false),
|
SUBARCH (kl, KL, ANY_KL, false),
|
||||||
SUBARCH (widekl, WIDEKL, ANY_WIDEKL, false),
|
SUBARCH (widekl, WIDEKL, ANY_WIDEKL, false),
|
||||||
SUBARCH (uintr, UINTR, UINTR, false),
|
SUBARCH (uintr, UINTR, UINTR, false),
|
||||||
|
@ -227,6 +227,7 @@ accept various extension mnemonics. For example,
|
|||||||
@code{popcnt},
|
@code{popcnt},
|
||||||
@code{hle},
|
@code{hle},
|
||||||
@code{rtm},
|
@code{rtm},
|
||||||
|
@code{tsx},
|
||||||
@code{invpcid},
|
@code{invpcid},
|
||||||
@code{clflush},
|
@code{clflush},
|
||||||
@code{mwaitx},
|
@code{mwaitx},
|
||||||
@ -1485,8 +1486,8 @@ supported on the CPU specified. The choices for @var{cpu_type} are:
|
|||||||
@item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.fsgsbase}
|
@item @samp{.aes} @tab @samp{.pclmul} @tab @samp{.fma} @tab @samp{.fsgsbase}
|
||||||
@item @samp{.rdrnd} @tab @samp{.f16c} @tab @samp{.avx2} @tab @samp{.bmi2}
|
@item @samp{.rdrnd} @tab @samp{.f16c} @tab @samp{.avx2} @tab @samp{.bmi2}
|
||||||
@item @samp{.lzcnt} @tab @samp{.popcnt} @tab @samp{.invpcid} @tab @samp{.vmfunc}
|
@item @samp{.lzcnt} @tab @samp{.popcnt} @tab @samp{.invpcid} @tab @samp{.vmfunc}
|
||||||
@item @samp{.hle}
|
@item @samp{.hle} @tab @samp{.rtm} @tab @samp{.tsx}
|
||||||
@item @samp{.rtm} @tab @samp{.adx} @tab @samp{.rdseed} @tab @samp{.prfchw}
|
@item @samp{.adx} @tab @samp{.rdseed} @tab @samp{.prfchw}
|
||||||
@item @samp{.smap} @tab @samp{.mpx} @tab @samp{.sha} @tab @samp{.prefetchwt1}
|
@item @samp{.smap} @tab @samp{.mpx} @tab @samp{.sha} @tab @samp{.prefetchwt1}
|
||||||
@item @samp{.clflushopt} @tab @samp{.xsavec} @tab @samp{.xsaves} @tab @samp{.se1}
|
@item @samp{.clflushopt} @tab @samp{.xsavec} @tab @samp{.xsaves} @tab @samp{.se1}
|
||||||
@item @samp{.avx512f} @tab @samp{.avx512cd} @tab @samp{.avx512er} @tab @samp{.avx512pf}
|
@item @samp{.avx512f} @tab @samp{.avx512cd} @tab @samp{.avx512er} @tab @samp{.avx512pf}
|
||||||
|
@ -231,6 +231,10 @@ static const dependency isa_dependencies[] =
|
|||||||
"SEV_ES" },
|
"SEV_ES" },
|
||||||
{ "RMPQUERY",
|
{ "RMPQUERY",
|
||||||
"SNP" },
|
"SNP" },
|
||||||
|
{ "TSX",
|
||||||
|
"RTM|HLE" },
|
||||||
|
{ "TSXLDTRK",
|
||||||
|
"RTM" },
|
||||||
{ "AMX_TILE",
|
{ "AMX_TILE",
|
||||||
"XSAVE" },
|
"XSAVE" },
|
||||||
{ "AMX_INT8",
|
{ "AMX_INT8",
|
||||||
|
@ -1138,7 +1138,7 @@
|
|||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
@ -1458,6 +1458,15 @@
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define CPU_TSX_FLAGS \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define CPU_ANY_FXSR_FLAGS \
|
#define CPU_ANY_FXSR_FLAGS \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, \
|
||||||
0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
@ -1800,6 +1809,15 @@
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define CPU_ANY_RTM_FLAGS \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define CPU_ANY_VMFUNC_FLAGS \
|
#define CPU_ANY_VMFUNC_FLAGS \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
@ -2061,6 +2079,15 @@
|
|||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
|
0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
|
||||||
|
|
||||||
|
#define CPU_ANY_TSXLDTRK_FLAGS \
|
||||||
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
|
||||||
|
|
||||||
#define CPU_ANY_KL_FLAGS \
|
#define CPU_ANY_KL_FLAGS \
|
||||||
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
{ { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
|
||||||
|
Reference in New Issue
Block a user