summaryrefslogtreecommitdiff
path: root/sys/src/9/bcm64/mmu.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2019-05-09 02:17:50 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2019-05-09 02:17:50 +0200
commit1046d3e30be09d7f1f07bf0a49f0e32584e86874 (patch)
tree86b73dec48085ea45b6840c50b12e52440f34fb4 /sys/src/9/bcm64/mmu.c
parent5a934b56f59f2cc0c7a700618a3f8211541c1bcd (diff)
bcm64: map framebuffer write-through to allow unaligned access
Diffstat (limited to 'sys/src/9/bcm64/mmu.c')
-rw-r--r--sys/src/9/bcm64/mmu.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/sys/src/9/bcm64/mmu.c b/sys/src/9/bcm64/mmu.c
index f57e798cb..112b99a80 100644
--- a/sys/src/9/bcm64/mmu.c
+++ b/sys/src/9/bcm64/mmu.c
@@ -124,18 +124,19 @@ kunmap(KMap*)
uintptr
mmukmap(uintptr va, uintptr pa, usize size)
{
- uintptr a, pe, off;
+ uintptr a, pe, off, attr;
if(va == 0)
return 0;
- assert((va % PGLSZ(1)) == 0);
+ attr = va & PTEMA(7);
+ va &= -PGLSZ(1);
off = pa % PGLSZ(1);
a = va + off;
pe = (pa + size + (PGLSZ(1)-1)) & -PGLSZ(1);
while(pa < pe){
((uintptr*)L1)[PTL1X(va, 1)] = pa | PTEVALID | PTEBLOCK | PTEWRITE | PTEAF
- | PTEKERNEL | PTESH(SHARE_OUTER) | PTEDEVICE;
+ | PTEKERNEL | PTESH(SHARE_OUTER) | attr;
pa += PGLSZ(1);
va += PGLSZ(1);
}