diff options
author | Laszlo Ersek <lersek@redhat.com> | 2018-09-29 21:22:57 +0200 |
---|---|---|
committer | Laszlo Ersek <lersek@redhat.com> | 2018-10-17 18:44:43 +0200 |
commit | c6fedbd7911c7645d2c93a865b1616ca1a2c1e63 (patch) | |
tree | c0fb33880862024b9140af506792158cdb5148c4 /BaseTools/Source/Python/Table/TableFunction.py | |
parent | 310ddb638b7b5223eef1960c7704fee7b18d1bf6 (diff) | |
download | edk2-c6fedbd7911c7645d2c93a865b1616ca1a2c1e63.tar.gz edk2-c6fedbd7911c7645d2c93a865b1616ca1a2c1e63.tar.bz2 edk2-c6fedbd7911c7645d2c93a865b1616ca1a2c1e63.zip |
MdePkg/BaseSynchronizationLib GCC: fix InternalSyncCompareExchange16()
The CMPXCHG instruction has the following operands:
- AX (implicit, CompareValue): input and output
- destination operand (*Value): input and output
- source operand (ExchangeValue): input
The IA32 version of InternalSyncCompareExchange16() correctly marks
CompareValue as input/output, but it marks (*Value) only as input.
The X64 version of InternalSyncCompareExchange16() attempts to mark both
CompareValue and (*Value) as input/output, but it doesn't use the
appropriate constraints for either operand.
Fix these issues. Furthermore, prefer the short "+" constraint for I/O
operands over the <output-operand-number> constraint that can be applied
to the input instances of I/O operands.
Cc: Liming Gao <liming.gao@intel.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Ref: https://bugzilla.tianocore.org/show_bug.cgi?id=1208
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Acked-by: Michael D Kinney <michael.d.kinney@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'BaseTools/Source/Python/Table/TableFunction.py')
0 files changed, 0 insertions, 0 deletions