diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-11-26 20:51:45 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2021-11-26 20:51:45 +0000 |
commit | 20ea113790c22e5fc8dd0051baa359e4fa083425 (patch) | |
tree | a64dbfef9f4e41db253a1d8f240bf6b060639b27 /sys/src/9/pc/mmu.c | |
parent | add3a0a4da2f46f69a87782699e77c794a8b2cb9 (diff) |
kernel: support large 64-bit pci membars, increase pc64 VMAPSIZE to 1TB
This makes vmap()/vunmap() take a vlong size argument,
and change the type of Pci.mem[].size to vlong as well.
Even if vmap() wont support large mappings, it is nice to
get the original unruncated value for error checking.
pc64 needs a bigger VMAP window, as system76 pangolin
puts the framebuffer at a physical address > 512GB.
Diffstat (limited to 'sys/src/9/pc/mmu.c')
-rw-r--r-- | sys/src/9/pc/mmu.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/sys/src/9/pc/mmu.c b/sys/src/9/pc/mmu.c index a21c94197..be5b9fd25 100644 --- a/sys/src/9/pc/mmu.c +++ b/sys/src/9/pc/mmu.c @@ -530,13 +530,13 @@ static void pdbunmap(ulong*, ulong, int); * Add a device mapping to the vmap range. */ void* -vmap(uvlong pa, int size) +vmap(uvlong pa, vlong size) { - int osize; + vlong osize; ulong o, va; if(pa < BY2PG || size <= 0 || ((pa+size) >> 32) != 0 || size > VMAPSIZE){ - print("vmap pa=%llux size=%d pc=%#p\n", pa, size, getcallerpc(&pa)); + print("vmap pa=%llux size=%lld pc=%#p\n", pa, size, getcallerpc(&pa)); return nil; } @@ -560,7 +560,7 @@ vmap(uvlong pa, int size) vmapsync(va+i); */ USED(osize); -// print(" vmap %#.8lux %d => %#.8lux\n", pa+o, osize, va+o); +// print(" vmap %#.8lux %lld => %#.8lux\n", pa+o, osize, va+o); return (void*)(va + o); } @@ -621,7 +621,7 @@ vmapalloc(ulong size) * the call need not be interlocked with vmap. */ void -vunmap(void *v, int size) +vunmap(void *v, vlong size) { ulong va, o; @@ -635,7 +635,7 @@ vunmap(void *v, int size) size = ROUND(size, BY2PG); if(size < 0 || va < VMAP || va+size > VMAP+VMAPSIZE) - panic("vunmap va=%#.8lux size=%#x pc=%#.8lux", + panic("vunmap va=%#.8lux size=%lld pc=%#.8lux", va, size, getcallerpc(&v)); pdbunmap(MACHP(0)->pdb, va, size); |