summaryrefslogtreecommitdiff
path: root/sys/src/9/cycv
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2022-01-16 19:25:11 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2022-01-16 19:25:11 +0000
commit6f9838a6a5b80e0253bdc8fb194ad6f15eb655f5 (patch)
treeb7b6770ef352dd40e389ef300f4e3495031d139e /sys/src/9/cycv
parent6e64d30454f71ecda88dba1bd792e97509115d73 (diff)
kernel: make Page.txtflush into an array
To avoid a MAXMACH limit of 32 and make txtflush into an array for the bitmap. Provide portable macros for testing and clearing the bits: needtxtflush(), donetxtflush(). On pc/pc64, define inittxtflush()/settxtflush() as no-op macros, avoiding the storage overhead of the txtflush array alltogether.
Diffstat (limited to 'sys/src/9/cycv')
-rw-r--r--sys/src/9/cycv/mmu.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/sys/src/9/cycv/mmu.c b/sys/src/9/cycv/mmu.c
index 213a88178..e85821f54 100644
--- a/sys/src/9/cycv/mmu.c
+++ b/sys/src/9/cycv/mmu.c
@@ -168,14 +168,14 @@ putmmu(uintptr va, uintptr pa, Page *pg)
old = *e;
*e = pa | L2VALID | L2USER | L2LOCAL;
tmpunmap(l2);
- splx(s);
if((old & L2VALID) != 0)
flushpg((void *) va);
- if(pg->txtflush & (1<<m->machno)){
+ if(needtxtflush(pg)){
cleandse((void *) va, (void *) (va + BY2PG));
invalise((void *) va, (void *) (va + BY2PG));
- pg->txtflush &= ~(1<<m->machno);
+ donetxtflush(pg);
}
+ splx(s);
}
void