summaryrefslogtreecommitdiffstats
path: root/sys/powerpc
diff options
context:
space:
mode:
authorjhibbits <jhibbits@FreeBSD.org>2013-08-06 03:09:44 +0000
committerjhibbits <jhibbits@FreeBSD.org>2013-08-06 03:09:44 +0000
commit7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b (patch)
tree310e8724dff7860c5e9308edcb1672d64588adf4 /sys/powerpc
parente280c38ab52aadf1da86439134cdd237e7181a1e (diff)
downloadFreeBSD-src-7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b.zip
FreeBSD-src-7ea290d1eb2fec36b2a7378f8e0ed0a34c81dd3b.tar.gz
Micro-optimize OFW syscons 8-bit blank.
MFC after: 1 week
Diffstat (limited to 'sys/powerpc')
-rw-r--r--sys/powerpc/ofw/ofw_syscons.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/sys/powerpc/ofw/ofw_syscons.c b/sys/powerpc/ofw/ofw_syscons.c
index 0820d73..84ba302 100644
--- a/sys/powerpc/ofw/ofw_syscons.c
+++ b/sys/powerpc/ofw/ofw_syscons.c
@@ -586,14 +586,22 @@ ofwfb_blank_display8(video_adapter_t *adp, int mode)
{
struct ofwfb_softc *sc;
int i;
- uint8_t *addr;
+ uint32_t *addr;
+ uint32_t color;
+ uint32_t end;
sc = (struct ofwfb_softc *)adp;
- addr = (uint8_t *) sc->sc_addr;
+ addr = (uint32_t *) sc->sc_addr;
+ end = (sc->sc_stride/4) * sc->sc_height;
+
+ /* Splat 4 pixels at once. */
+ color = (ofwfb_background(SC_NORM_ATTR) << 24) |
+ (ofwfb_background(SC_NORM_ATTR) << 16) |
+ (ofwfb_background(SC_NORM_ATTR) << 8) |
+ (ofwfb_background(SC_NORM_ATTR));
- /* Could be done a lot faster e.g. 32-bits, or Altivec'd */
- for (i = 0; i < sc->sc_stride*sc->sc_height; i++)
- *(addr + i) = ofwfb_background(SC_NORM_ATTR);
+ for (i = 0; i < end; i++)
+ *(addr + i) = color;
return (0);
}
OpenPOWER on IntegriCloud