diff --git a/sys/src/9/bcm64/mem.h b/sys/src/9/bcm64/mem.h index 19f9de143..d4b55f556 100644 --- a/sys/src/9/bcm64/mem.h +++ b/sys/src/9/bcm64/mem.h @@ -63,7 +63,7 @@ #define MACHADDR(n) (KTZERO-((n)+1)*MACHSIZE) #define KTZERO (KZERO+0x80000) /* kernel text start */ -#define FRAMEBUFFER 0xFFFFFFFFC0000000ULL +#define FRAMEBUFFER (0xFFFFFFFFC0000000ULL | PTEWT) #define VIRTIO 0xFFFFFFFFE0000000ULL /* i/o registers */ #define ARMLOCAL (VIRTIO+IOSIZE) #define VGPIO 0 /* virtual gpio for pi3 ACT LED */ @@ -125,7 +125,7 @@ #define PTEWT PTEMA(MA_MEM_WT) #define PTEUNCACHED PTEMA(MA_MEM_UC) -#define PTEDEVICE PTEMA(MA_DEV_nGnRnE) +#define PTEDEVICE PTEMA(MA_DEV_nGnRE) /* * Physical machine information from here on. 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); }