diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-01-16 19:25:11 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-01-16 19:25:11 +0000 |
commit | 6f9838a6a5b80e0253bdc8fb194ad6f15eb655f5 (patch) | |
tree | b7b6770ef352dd40e389ef300f4e3495031d139e /sys/src/9/cycv | |
parent | 6e64d30454f71ecda88dba1bd792e97509115d73 (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.c | 6 |
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 |