Substitute some magic numbers by named constants for slightly improved readability.
Signed-off-by: Bernhard Beschow <[email protected]> --- hw/char/serial.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/hw/char/serial.c b/hw/char/serial.c index f73de1ae4f..485b98f03f 100644 --- a/hw/char/serial.c +++ b/hw/char/serial.c @@ -39,6 +39,11 @@ #include "hw/core/qdev-properties-system.h" #define UART_LCR_DLAB 0x80 /* Divisor latch access bit */ +#define UART_LCR_SB 0x40 /* Set break */ +#define UART_LCR_EPS 0x10 /* Even parity select */ +#define UART_LCR_PEN 0x08 /* Parity enable */ +#define UART_LCR_NSTB 0x04 /* Number of stop bits */ +#define UART_LCR_WLS 0x03 /* Word length select */ #define UART_IER_MSI 0x08 /* Enable Modem status interrupt */ #define UART_IER_RLSI 0x04 /* Enable receiver line status interrupt */ @@ -153,23 +158,23 @@ static void serial_update_parameters(SerialState *s) /* Start bit. */ frame_size = 1; - if (s->lcr & 0x08) { + if (s->lcr & UART_LCR_PEN) { /* Parity bit. */ frame_size++; - if (s->lcr & 0x10) + if (s->lcr & UART_LCR_EPS) parity = 'E'; else parity = 'O'; } else { parity = 'N'; } - if (s->lcr & 0x04) { + if (s->lcr & UART_LCR_NSTB) { stop_bits = 2; } else { stop_bits = 1; } - data_bits = (s->lcr & 0x03) + 5; + data_bits = (s->lcr & UART_LCR_WLS) + 5; frame_size += data_bits + stop_bits; /* Zero divisor should give about 3500 baud */ speed = (s->divider == 0) ? 3500 : (float) s->baudbase / s->divider; @@ -430,7 +435,7 @@ static void serial_ioport_write(void *opaque, hwaddr addr, uint64_t val, int break_enable; s->lcr = val; serial_update_parameters(s); - break_enable = (val >> 6) & 1; + break_enable = !!(val & UART_LCR_SB); if (break_enable != s->last_break_enable) { s->last_break_enable = break_enable; qemu_chr_fe_ioctl(&s->chr, CHR_IOCTL_SERIAL_SET_BREAK, @@ -676,7 +681,7 @@ static int serial_post_load(void *opaque, int version_id) } } - s->last_break_enable = (s->lcr >> 6) & 1; + s->last_break_enable = !!(s->lcr & UART_LCR_SB); /* Initialize fcr via setter to perform essential side-effects */ serial_write_fcr(s, s->fcr_vmstate); serial_update_parameters(s); -- 2.53.0
