Hi tech@, Here is a diff to avoid calculating offset several times in rasops.c. This was done for a few functions already, but not all of them.
Comments? OK? Index: sys/dev/rasops/rasops.c =================================================================== RCS file: /cvs/src/sys/dev/rasops/rasops.c,v retrieving revision 1.42 diff -u -p -r1.42 rasops.c --- sys/dev/rasops/rasops.c 7 Sep 2015 18:00:58 -0000 1.42 +++ sys/dev/rasops/rasops.c 21 Sep 2016 14:44:58 -0000 @@ -1577,8 +1577,10 @@ rasops_vcons_erasecols(void *cookie, int int i; for (i = 0; i < num; i++) { - scr->rs_bs[row * cols + col + i].uc = ' '; - scr->rs_bs[row * cols + col + i].attr = attr; + int off = row * cols + col + i; + + scr->rs_bs[off].uc = ' '; + scr->rs_bs[off].attr = attr; } if (!scr->rs_visible) @@ -1626,8 +1628,10 @@ rasops_vcons_eraserows(void *cookie, int int i; for (i = 0; i < num * cols; i++) { - scr->rs_bs[row * cols + i].uc = ' '; - scr->rs_bs[row * cols + i].attr = attr; + int off = row * cols + i; + + scr->rs_bs[off].uc = ' '; + scr->rs_bs[off].attr = attr; } if (!scr->rs_visible) @@ -1695,8 +1699,10 @@ rasops_wronly_erasecols(void *cookie, in int i; for (i = 0; i < num; i++) { - ri->ri_bs[row * cols + col + i].uc = ' '; - ri->ri_bs[row * cols + col + i].attr = attr; + int off = row * cols + col + i; + + ri->ri_bs[off].uc = ' '; + ri->ri_bs[off].attr = attr; } return ri->ri_erasecols(ri, row, col, num, attr); @@ -1734,8 +1740,10 @@ rasops_wronly_eraserows(void *cookie, in int i; for (i = 0; i < num * cols; i++) { - ri->ri_bs[row * cols + i].uc = ' '; - ri->ri_bs[row * cols + i].attr = attr; + int off = row * cols + i; + + ri->ri_bs[off].uc = ' '; + ri->ri_bs[off].attr = attr; } return ri->ri_eraserows(ri, row, num, attr);