The code currently uses bitfields to store true-false values. Switch all of that to bools. Apart from the cleanup, it saves 20B of code as many shifts, ANDs, and ORs became simple movzb's.
Unified · Split
| @@ -706,8 +706,8 @@ void update_region(struct vc_data *vc, unsigned long start, int count) · 705 unmodified lines | ||
| 706 | 706 | /* Structure of attributes is hardware-dependent */ |
| 707 | 707 | |
| 708 | 708 | static u8 build_attr(struct vc_data *vc, u8 _color, |
| 709 | − enum vc_intensity _intensity, u8 _blink, u8 _underline, | |
| 710 | − u8 _reverse, u8 _italic) | |
| 709 | + enum vc_intensity _intensity, bool _blink, bool _underline, | |
| 710 | + bool _reverse, bool _italic) | |
| 711 | 711 | { |
| 712 | 712 | if (vc->vc_sw->con_build_attr) |
| 713 | 713 | return vc->vc_sw->con_build_attr(vc, _color, _intensity, |
| @@ -755,8 +755,8 @@ static void update_attr(struct vc_data *vc) · 41 unmodified lines | ||
| 755 | 755 | vc->state.blink, vc->state.underline, |
| 756 | 756 | vc->state.reverse ^ vc->vc_decscnm, vc->state.italic); |
| 757 | 757 | vc->vc_video_erase_char = ' ' | (build_attr(vc, vc->state.color, |
| 758 | − VCI_NORMAL, vc->state.blink, 0, vc->vc_decscnm, | |
| 759 | − 0) << 8); | |
| 758 | + VCI_NORMAL, vc->state.blink, false, | |
| 759 | + vc->vc_decscnm, false) << 8); | |
| 760 | 760 | } |
| 761 | 761 | |
| 762 | 762 | /* Note: inverting the screen twice should revert to the original state */ |
| @@ -1614,10 +1614,10 @@ static void csi_X(struct vc_data *vc, int vpar) /* erase the following vpar posi · 851 unmodified lines | ||
| 1614 | 1614 | static void default_attr(struct vc_data *vc) |
| 1615 | 1615 | { |
| 1616 | 1616 | vc->state.intensity = VCI_NORMAL; |
| 1617 | − vc->state.italic = 0; | |
| 1618 | − vc->state.underline = 0; | |
| 1619 | − vc->state.reverse = 0; | |
| 1620 | − vc->state.blink = 0; | |
| 1617 | + vc->state.italic = false; | |
| 1618 | + vc->state.underline = false; | |
| 1619 | + vc->state.reverse = false; | |
| 1620 | + vc->state.blink = false; | |
| 1621 | 1621 | vc->state.color = vc->vc_def_color; |
| 1622 | 1622 | } |
| 1623 | 1623 | |
| @@ -1723,7 +1723,7 @@ static void csi_m(struct vc_data *vc) · 99 unmodified lines | ||
| 1723 | 1723 | vc->state.intensity = VCI_HALF_BRIGHT; |
| 1724 | 1724 | break; |
| 1725 | 1725 | case 3: |
| 1726 | − vc->state.italic = 1; | |
| 1726 | + vc->state.italic = true; | |
| 1727 | 1727 | break; |
| 1728 | 1728 | case 21: |
| 1729 | 1729 | /* |
| @@ -1731,13 +1731,13 @@ static void csi_m(struct vc_data *vc) · 1 unmodified line | ||
| 1731 | 1731 | * convert it to a single underline. |
| 1732 | 1732 | */ |
| 1733 | 1733 | case 4: |
| 1734 | − vc->state.underline = 1; | |
| 1734 | + vc->state.underline = true; | |
| 1735 | 1735 | break; |
| 1736 | 1736 | case 5: |
| 1737 | − vc->state.blink = 1; | |
| 1737 | + vc->state.blink = true; | |
| 1738 | 1738 | break; |
| 1739 | 1739 | case 7: |
| 1740 | − vc->state.reverse = 1; | |
| 1740 | + vc->state.reverse = true; | |
| 1741 | 1741 | break; |
| 1742 | 1742 | case 10: /* ANSI X3.64-1979 (SCO-ish?) |
| 1743 | 1743 | * Select primary font, don't display control chars if |
| @@ -1769,16 +1769,16 @@ static void csi_m(struct vc_data *vc) · 25 unmodified lines | ||
| 1769 | 1769 | vc->state.intensity = VCI_NORMAL; |
| 1770 | 1770 | break; |
| 1771 | 1771 | case 23: |
| 1772 | − vc->state.italic = 0; | |
| 1772 | + vc->state.italic = false; | |
| 1773 | 1773 | break; |
| 1774 | 1774 | case 24: |
| 1775 | − vc->state.underline = 0; | |
| 1775 | + vc->state.underline = false; | |
| 1776 | 1776 | break; |
| 1777 | 1777 | case 25: |
| 1778 | − vc->state.blink = 0; | |
| 1778 | + vc->state.blink = false; | |
| 1779 | 1779 | break; |
| 1780 | 1780 | case 27: |
| 1781 | − vc->state.reverse = 0; | |
| 1781 | + vc->state.reverse = false; | |
| 1782 | 1782 | break; |
| 1783 | 1783 | case 38: |
| 1784 | 1784 | i = vc_t416_color(vc, i, rgb_foreground); |
| @@ -303,7 +303,8 @@ sisusbcon_deinit(struct vc_data *c) · 302 unmodified lines | ||
| 303 | 303 | /* interface routine */ |
| 304 | 304 | static u8 |
| 305 | 305 | sisusbcon_build_attr(struct vc_data *c, u8 color, enum vc_intensity intensity, |
| 306 | − u8 blink, u8 underline, u8 reverse, u8 unused) | |
| 306 | + bool blink, bool underline, bool reverse, | |
| 307 | + bool unused) | |
| 307 | 308 | { |
| 308 | 309 | u8 attr = color; |
| 309 | 310 | |
| @@ -396,7 +396,8 @@ static inline u16 mda_convert_attr(u16 ch) · 395 unmodified lines | ||
| 396 | 396 | |
| 397 | 397 | static u8 mdacon_build_attr(struct vc_data *c, u8 color, |
| 398 | 398 | enum vc_intensity intensity, |
| 399 | − u8 blink, u8 underline, u8 reverse, u8 italic) | |
| 399 | + bool blink, bool underline, bool reverse, | |
| 400 | + bool italic) | |
| 400 | 401 | { |
| 401 | 402 | /* The attribute is just a bit vector: |
| 402 | 403 | * |
| @@ -407,10 +408,10 @@ static u8 mdacon_build_attr(struct vc_data *c, u8 color, · 4 unmodified lines | ||
| 407 | 408 | */ |
| 408 | 409 | |
| 409 | 410 | return (intensity & VCI_MASK) | |
| 410 | − ((underline & 1) << 2) | | |
| 411 | − ((reverse & 1) << 3) | | |
| 412 | − (!!italic << 4) | | |
| 413 | − ((blink & 1) << 7); | |
| 411 | + (underline << 2) | | |
| 412 | + (reverse << 3) | | |
| 413 | + (italic << 4) | | |
| 414 | + (blink << 7); | |
| 414 | 415 | } |
| 415 | 416 | |
| 416 | 417 | static void mdacon_invert_region(struct vc_data *c, u16 *p, int count) |
| @@ -290,7 +290,8 @@ static unsigned long sticon_getxy(struct vc_data *conp, unsigned long pos, · 289 unmodified lines | ||
| 290 | 290 | |
| 291 | 291 | static u8 sticon_build_attr(struct vc_data *conp, u8 color, |
| 292 | 292 | enum vc_intensity intens, |
| 293 | − u8 blink, u8 underline, u8 reverse, u8 italic) | |
| 293 | + bool blink, bool underline, bool reverse, | |
| 294 | + bool italic) | |
| 294 | 295 | { |
| 295 | 296 | u8 attr = ((color & 0x70) >> 1) | ((color & 7)); |
| 296 | 297 | |
| @@ -631,7 +631,8 @@ static void vgacon_deinit(struct vc_data *c) · 630 unmodified lines | ||
| 631 | 631 | |
| 632 | 632 | static u8 vgacon_build_attr(struct vc_data *c, u8 color, |
| 633 | 633 | enum vc_intensity intensity, |
| 634 | − u8 blink, u8 underline, u8 reverse, u8 italic) | |
| 634 | + bool blink, bool underline, bool reverse, | |
| 635 | + bool italic) | |
| 635 | 636 | { |
| 636 | 637 | u8 attr = color; |
| 637 | 638 | |
| @@ -78,7 +78,7 @@ struct consw { · 77 unmodified lines | ||
| 78 | 78 | void (*con_save_screen)(struct vc_data *vc); |
| 79 | 79 | u8 (*con_build_attr)(struct vc_data *vc, u8 color, |
| 80 | 80 | enum vc_intensity intensity, |
| 81 | − u8 blink, u8 underline, u8 reverse, u8 italic); | |
| 81 | + bool blink, bool underline, bool reverse, bool italic); | |
| 82 | 82 | void (*con_invert_region)(struct vc_data *vc, u16 *p, int count); |
| 83 | 83 | u16 *(*con_screen_pos)(struct vc_data *vc, int offset); |
| 84 | 84 | unsigned long (*con_getxy)(struct vc_data *vc, unsigned long position, |
| @@ -54,10 +54,10 @@ struct vc_state { · 53 unmodified lines | ||
| 54 | 54 | |
| 55 | 55 | /* attribute flags */ |
| 56 | 56 | enum vc_intensity intensity; |
| 57 | − unsigned int italic : 1; | |
| 58 | − unsigned int underline : 1; | |
| 59 | − unsigned int blink : 1; | |
| 60 | − unsigned int reverse : 1; | |
| 57 | + bool italic; | |
| 58 | + bool underline; | |
| 59 | + bool blink; | |
| 60 | + bool reverse; | |
| 61 | 61 | }; |
| 62 | 62 | |
| 63 | 63 | /* |