diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-09 02:17:50 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2019-05-09 02:17:50 +0200 |
commit | 1046d3e30be09d7f1f07bf0a49f0e32584e86874 (patch) | |
tree | 86b73dec48085ea45b6840c50b12e52440f34fb4 /sys/src/9/bcm64/mmu.c | |
parent | 5a934b56f59f2cc0c7a700618a3f8211541c1bcd (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.c | 7 |
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); } |