aboutsummaryrefslogtreecommitdiff
path: root/slof/prim.code
diff options
context:
space:
mode:
authorThomas Huth <thuth@redhat.com>2015-08-03 23:06:38 +0200
committerAlexey Kardashevskiy <aik@ozlabs.ru>2015-08-05 16:02:18 +1000
commit47a425db40eb683941e22609984d5f99d677d5b8 (patch)
treea1e7c64ccd439731c44f4bc8b3786244735acb95 /slof/prim.code
parent59a135eb78378f1574549c93bbf421505576ec6e (diff)
downloadSLOF-47a425db40eb683941e22609984d5f99d677d5b8.zip
SLOF-47a425db40eb683941e22609984d5f99d677d5b8.tar.gz
SLOF-47a425db40eb683941e22609984d5f99d677d5b8.tar.bz2
fbuffer: Implement RFILL as an accelerated primitive
By implementing RFILL as an primitive, we can get a huge speed-up of the screen erasing function. On board-js2x, it writes the pattern directly into the IO region, and on board-qemu it uses the KVMPPC_H_LOGICAL_MEMOP hypercall to copy the pattern from a temporary buffer into the IO region. Signed-off-by: Thomas Huth <thuth@redhat.com> Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Diffstat (limited to 'slof/prim.code')
-rw-r--r--slof/prim.code7
1 files changed, 7 insertions, 0 deletions
diff --git a/slof/prim.code b/slof/prim.code
index cb6e201..bb9e036 100644
--- a/slof/prim.code
+++ b/slof/prim.code
@@ -527,6 +527,13 @@ PRIM(MRMOVE)
FAST_MRMOVE(s, d, size);
MIRP
+PRIM(RFILL)
+ type_u pat = TOS.u; POP;
+ type_u size = TOS.u; POP;
+ void *dst = TOS.a; POP;
+ FAST_RFILL(dst, size, pat);
+ MIRP
+
// String compare, case insensitive:
// : string=ci ( str1 len1 str2 len2 -- equal? )
PRIM(STRING_X3d_CI)