From c75ca4ea8f071f91d35dc07eb193db70ccba7a0e Mon Sep 17 00:00:00 2001 From: Idan Horowitz Date: Sat, 15 May 2021 01:16:43 +0300 Subject: [PATCH] Kernel: Bit mask line control options in SerialDevice::set_line_control The line control option bits (parity, stop bits, word length) were masked and then combined incorrectly, resulting in them not being set when requested. --- Kernel/Devices/SerialDevice.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Kernel/Devices/SerialDevice.cpp b/Kernel/Devices/SerialDevice.cpp index aa25c4bb66..3198cc9e88 100644 --- a/Kernel/Devices/SerialDevice.cpp +++ b/Kernel/Devices/SerialDevice.cpp @@ -105,7 +105,7 @@ void SerialDevice::set_line_control(ParitySelect parity_select, StopBits stop_bi m_stop_bits = stop_bits; m_word_length = word_length; - IO::out8(m_base_addr + 3, IO::in8(m_base_addr + 3) & (0xc0 | parity_select | stop_bits | word_length)); + IO::out8(m_base_addr + 3, (IO::in8(m_base_addr + 3) & ~0x3f) | parity_select | stop_bits | word_length); } void SerialDevice::set_break_enable(bool break_enable)