mirror of https://github.com/acidanthera/audk.git
PcAtChipsetPkg/SerialIoLib: Remove negative value shift
https://bugzilla.tianocore.org/show_bug.cgi?id=553 Remove left shift of negative values that always evaluate to 0 to address build errors from the llvm/clang compiler used in the XCODE5 tool chain. Clang rightfully complains about left-shifting ~DLAB. DLAB is #defined as 0x01 (an "int"), hence ~DLAB has value (-2) on all edk2 platforms. Left-shifting a negative int is undefined behavior. Rather than replacing ~DLAB with ~(UINT32)DLAB, realize that the nonzero bits of (~(UINT32)DLAB << 7) would all be truncated away in the final conversion to UINT8 anyway. So just remove (~DLAB << 7). Cc: Ruiyu Ni <ruiyu.ni@intel.com> Cc: Andrew Fish <afish@apple.com> Cc: Laszlo Ersek <lersek@redhat.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com>
This commit is contained in:
parent
da0df6ca8f
commit
bbd61de5db
|
@ -102,7 +102,7 @@ SerialPortInitialize (
|
|||
//
|
||||
// Switch back to bank 0
|
||||
//
|
||||
OutputData = (UINT8) ((~DLAB << 7) | (gBreakSet << 6) | (gParity << 3) | (gStop << 2) | Data);
|
||||
OutputData = (UINT8) ( (gBreakSet << 6) | (gParity << 3) | (gStop << 2) | Data);
|
||||
IoWrite8 (gUartBase + LCR_OFFSET, OutputData);
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
|
@ -481,7 +481,7 @@ SerialPortSetAttributes (
|
|||
//
|
||||
// Switch back to bank 0
|
||||
//
|
||||
OutputData = (UINT8) ((~DLAB << 7) | (gBreakSet << 6) | (LcrParity << 3) | (LcrStop << 2) | LcrData);
|
||||
OutputData = (UINT8) ((gBreakSet << 6) | (LcrParity << 3) | (LcrStop << 2) | LcrData);
|
||||
IoWrite8 (gUartBase + LCR_OFFSET, OutputData);
|
||||
|
||||
return RETURN_SUCCESS;
|
||||
|
|
Loading…
Reference in New Issue