diff options
author | Luca Dariz <luca@orpolo.org> | 2023-02-12 18:28:15 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2023-02-12 19:05:47 +0100 |
commit | 1956a5e0f56793e11edc8fcf0a66fb68c1e4049d (patch) | |
tree | 387b9ad3fd537c5d285877445f30d9236a50f1fe /i386/intel | |
parent | 5c2f82deeba84394c621b2d98ce7d73489c88ac3 (diff) | |
download | gnumach-1956a5e0f56793e11edc8fcf0a66fb68c1e4049d.tar.gz gnumach-1956a5e0f56793e11edc8fcf0a66fb68c1e4049d.tar.bz2 gnumach-1956a5e0f56793e11edc8fcf0a66fb68c1e4049d.zip |
add more explicit names for user space virtual space limits
* i386/i386/vm_param.h: add VM_MAX/MIN_USER_ADDRESS to kernel headers.
* i386/i386/db_interface.c
* i386/i386/ldt.c
* i386/i386/pcb.c
* i386/intel/pmap.c
* kern/task.c: replace VM_MAX/MIN_ADDRESS with VM_MAX/MIN_USER_ADDRESS
Message-Id: <20230212172818.1511405-7-luca@orpolo.org>
Diffstat (limited to 'i386/intel')
-rw-r--r-- | i386/intel/pmap.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/i386/intel/pmap.c b/i386/intel/pmap.c index 1f1d8d9b..698b95db 100644 --- a/i386/intel/pmap.c +++ b/i386/intel/pmap.c @@ -1342,7 +1342,7 @@ pmap_t pmap_create(vm_size_t size) ); } #ifdef __x86_64__ - // TODO alloc only PDPTE for the user range VM_MIN_ADDRESS, VM_MAX_ADDRESS + // TODO alloc only PDPTE for the user range VM_MIN_USER_ADDRESS, VM_MAX_USER_ADDRESS // and keep the same for kernel range, in l4 table we have different entries p->l4base = (pt_entry_t *) kmem_cache_alloc(&l4_cache); if (p->l4base == NULL) @@ -1350,7 +1350,7 @@ pmap_t pmap_create(vm_size_t size) memset(p->l4base, 0, INTEL_PGBYTES); WRITE_PTE(&p->l4base[lin2l4num(VM_MIN_KERNEL_ADDRESS)], pa_to_pte(kvtophys((vm_offset_t) pdp_kernel)) | INTEL_PTE_VALID | INTEL_PTE_WRITE | INTEL_PTE_USER); -#if lin2l4num(VM_MIN_KERNEL_ADDRESS) != lin2l4num(VM_MAX_ADDRESS) +#if lin2l4num(VM_MIN_KERNEL_ADDRESS) != lin2l4num(VM_MAX_USER_ADDRESS) // TODO kernel vm and user vm are not in the same l4 entry, so add the user one #endif #ifdef MACH_PV_PAGETABLES @@ -1362,7 +1362,7 @@ pmap_t pmap_create(vm_size_t size) memset(p->user_pdpbase, 0, INTEL_PGBYTES); { int i; - for (i = 0; i < lin2pdpnum(VM_MAX_ADDRESS); i++) + for (i = 0; i < lin2pdpnum(VM_MAX_USER_ADDRESS); i++) WRITE_PTE(&p->user_pdpbase[i], pa_to_pte(kvtophys((vm_offset_t) page_dir[i])) | INTEL_PTE_VALID | INTEL_PTE_WRITE); } // FIXME: use kmem_cache_alloc instead @@ -1440,7 +1440,7 @@ void pmap_destroy(pmap_t p) #ifdef __x86_64__ #ifdef USER32 /* In this case we know we have one PDP for user space */ - pt_entry_t *pdp = (pt_entry_t *) ptetokv(p->l4base[lin2l4num(VM_MIN_ADDRESS)]); + pt_entry_t *pdp = (pt_entry_t *) ptetokv(p->l4base[lin2l4num(VM_MIN_USER_ADDRESS)]); #else #error "TODO do 64-bit userspace need more that 512G?" #endif /* USER32 */ @@ -1502,8 +1502,8 @@ void pmap_destroy(pmap_t p) #endif /* MACH_PV_PAGETABLES */ #ifdef __x86_64__ - kmem_cache_free(&pdpt_cache, (vm_offset_t) pmap_ptp(p, VM_MIN_ADDRESS)); -#if lin2l4num(VM_MIN_KERNEL_ADDRESS) != lin2l4num(VM_MAX_ADDRESS) + kmem_cache_free(&pdpt_cache, (vm_offset_t) pmap_ptp(p, VM_MIN_USER_ADDRESS)); +#if lin2l4num(VM_MIN_KERNEL_ADDRESS) != lin2l4num(VM_MAX_USER_ADDRESS) // TODO kernel vm and user vm are not in the same l4 entry #endif kmem_cache_free(&l4_cache, (vm_offset_t) p->l4base); @@ -2449,7 +2449,7 @@ void pmap_collect(pmap_t p) #ifdef __x86_64__ #ifdef USER32 /* In this case we know we have one PDP for user space */ - pdp = (pt_entry_t *) ptetokv(p->l4base[lin2l4num(VM_MIN_ADDRESS)]); + pdp = (pt_entry_t *) ptetokv(p->l4base[lin2l4num(VM_MIN_USER_ADDRESS)]); #else #error "TODO do 64-bit userspace need more that 512G?" #endif /* USER32 */ @@ -2556,7 +2556,7 @@ void pmap_collect(pmap_t p) #if PAE } #endif - PMAP_UPDATE_TLBS(p, VM_MIN_ADDRESS, VM_MAX_ADDRESS); + PMAP_UPDATE_TLBS(p, VM_MIN_USER_ADDRESS, VM_MAX_USER_ADDRESS); PMAP_READ_UNLOCK(p, spl); return; @@ -2967,7 +2967,7 @@ void signal_cpus( * indicate overflow. */ update_list_p->item[UPDATE_LIST_SIZE-1].pmap = kernel_pmap; - update_list_p->item[UPDATE_LIST_SIZE-1].start = VM_MIN_ADDRESS; + update_list_p->item[UPDATE_LIST_SIZE-1].start = VM_MIN_USER_ADDRESS; update_list_p->item[UPDATE_LIST_SIZE-1].end = VM_MAX_KERNEL_ADDRESS; } else { |