seg                96 bsp/hal/x86/arch/cpu.c 	struct seg_desc *seg = &gdt[vec];
seg               102 bsp/hal/x86/arch/cpu.c 	seg->limit_lo = limit;
seg               103 bsp/hal/x86/arch/cpu.c 	seg->base_lo = (u_int)base & 0xffff;
seg               104 bsp/hal/x86/arch/cpu.c 	seg->base_mid = ((u_int)base >> 16) & 0xff;
seg               105 bsp/hal/x86/arch/cpu.c 	seg->limit_hi = limit >> 16;
seg               106 bsp/hal/x86/arch/cpu.c 	seg->base_hi = (u_int)base >> 24;
seg               107 bsp/hal/x86/arch/cpu.c 	seg->type = (u_int)type | ST_PRESENT;
seg               108 bsp/hal/x86/arch/cpu.c 	seg->size = size;
seg                41 sys/include/vm.h struct seg {
seg                42 sys/include/vm.h 	struct seg	*prev;		/* segment list sorted by address */
seg                43 sys/include/vm.h 	struct seg	*next;
seg                44 sys/include/vm.h 	struct seg	*sh_prev;	/* link for all shared segments */
seg                45 sys/include/vm.h 	struct seg	*sh_next;
seg                70 sys/include/vm.h 	struct seg	head;		/* list head of segements */
seg                57 sys/mem/vm.c   static void	   seg_init(struct seg *);
seg                58 sys/mem/vm.c   static struct seg *seg_create(struct seg *, vaddr_t, size_t);
seg                59 sys/mem/vm.c   static void	   seg_delete(struct seg *, struct seg *);
seg                60 sys/mem/vm.c   static struct seg *seg_lookup(struct seg *, vaddr_t, size_t);
seg                61 sys/mem/vm.c   static struct seg *seg_alloc(struct seg *, size_t);
seg                62 sys/mem/vm.c   static void	   seg_free(struct seg *, struct seg *);
seg                63 sys/mem/vm.c   static struct seg *seg_reserve(struct seg *, vaddr_t, size_t);
seg               121 sys/mem/vm.c   	struct seg *seg;
seg               135 sys/mem/vm.c   		if ((seg = seg_alloc(&map->head, size)) == NULL)
seg               142 sys/mem/vm.c   		if ((seg = seg_reserve(&map->head, start, size)) == NULL)
seg               145 sys/mem/vm.c   	seg->flags = SEG_READ | SEG_WRITE;
seg               153 sys/mem/vm.c   	if (mmu_map(map->pgd, pa, seg->addr, size, PG_WRITE))
seg               156 sys/mem/vm.c   	seg->phys = pa;
seg               159 sys/mem/vm.c   	memset(ptokv(pa), 0, seg->size);
seg               160 sys/mem/vm.c   	*addr = (void *)seg->addr;
seg               167 sys/mem/vm.c   	seg_free(&map->head, seg);
seg               209 sys/mem/vm.c   	struct seg *seg;
seg               217 sys/mem/vm.c   	seg = seg_lookup(&map->head, va, 1);
seg               218 sys/mem/vm.c   	if (seg == NULL || seg->addr != va || (seg->flags & SEG_FREE))
seg               224 sys/mem/vm.c   	mmu_map(map->pgd, seg->phys, seg->addr,	seg->size, PG_UNMAP);
seg               229 sys/mem/vm.c   	if (!(seg->flags & SEG_SHARED) && !(seg->flags & SEG_MAPPED))
seg               230 sys/mem/vm.c   		page_free(seg->phys, seg->size);
seg               232 sys/mem/vm.c   	map->total -= seg->size;
seg               233 sys/mem/vm.c   	seg_free(&map->head, seg);
seg               278 sys/mem/vm.c   	struct seg *seg;
seg               288 sys/mem/vm.c   	seg = seg_lookup(&map->head, va, 1);
seg               289 sys/mem/vm.c   	if (seg == NULL || seg->addr != va || (seg->flags & SEG_FREE)) {
seg               295 sys/mem/vm.c   	if (seg->flags & SEG_MAPPED)
seg               302 sys/mem/vm.c   	if (seg->flags & SEG_WRITE) {
seg               317 sys/mem/vm.c   	if (seg->flags & SEG_SHARED) {
seg               319 sys/mem/vm.c   		old_pa = seg->phys;
seg               322 sys/mem/vm.c   		if ((new_pa = page_alloc(seg->size)) == 0)
seg               326 sys/mem/vm.c   		memcpy(ptokv(new_pa), ptokv(old_pa), seg->size);
seg               329 sys/mem/vm.c   		if (mmu_map(map->pgd, new_pa, seg->addr, seg->size,
seg               331 sys/mem/vm.c   			page_free(new_pa, seg->size);
seg               334 sys/mem/vm.c   		seg->phys = new_pa;
seg               337 sys/mem/vm.c   		seg->sh_prev->sh_next = seg->sh_next;
seg               338 sys/mem/vm.c   		seg->sh_next->sh_prev = seg->sh_prev;
seg               339 sys/mem/vm.c   		if (seg->sh_prev == seg->sh_next)
seg               340 sys/mem/vm.c   			seg->sh_prev->flags &= ~SEG_SHARED;
seg               341 sys/mem/vm.c   		seg->sh_next = seg->sh_prev = seg;
seg               343 sys/mem/vm.c   		if (mmu_map(map->pgd, seg->phys, seg->addr, seg->size,
seg               347 sys/mem/vm.c   	seg->flags = new_flags;
seg               388 sys/mem/vm.c   	struct seg *seg, *cur, *tgt;
seg               414 sys/mem/vm.c   	seg = seg_lookup(&map->head, start, size);
seg               415 sys/mem/vm.c   	if (seg == NULL || (seg->flags & SEG_FREE))
seg               417 sys/mem/vm.c   	tgt = seg;
seg               423 sys/mem/vm.c   	if ((seg = seg_alloc(&curmap->head, size)) == NULL)
seg               425 sys/mem/vm.c   	cur = seg;
seg               437 sys/mem/vm.c   		seg_free(&curmap->head, seg);
seg               485 sys/mem/vm.c   	struct seg *seg, *tmp;
seg               491 sys/mem/vm.c   	seg = &map->head;
seg               493 sys/mem/vm.c   		if (seg->flags != SEG_FREE) {
seg               495 sys/mem/vm.c   			mmu_map(map->pgd, seg->phys, seg->addr,
seg               496 sys/mem/vm.c   				seg->size, PG_UNMAP);
seg               499 sys/mem/vm.c   			if (!(seg->flags & SEG_SHARED) &&
seg               500 sys/mem/vm.c   			    !(seg->flags & SEG_MAPPED)) {
seg               501 sys/mem/vm.c   				page_free(seg->phys, seg->size);
seg               504 sys/mem/vm.c   		tmp = seg;
seg               505 sys/mem/vm.c   		seg = seg->next;
seg               507 sys/mem/vm.c   	} while (seg != &map->head);
seg               548 sys/mem/vm.c   	struct seg *tmp, *src, *dest;
seg               746 sys/mem/vm.c   	struct seg *seg;
seg               754 sys/mem/vm.c   	seg = &map->head;
seg               759 sys/mem/vm.c   			info->virt = seg->addr;
seg               760 sys/mem/vm.c   			info->size = seg->size;
seg               761 sys/mem/vm.c   			info->flags = seg->flags;
seg               762 sys/mem/vm.c   			info->phys = seg->phys;
seg               766 sys/mem/vm.c   		seg = seg->next;
seg               767 sys/mem/vm.c   	} while (seg != &map->head);
seg               794 sys/mem/vm.c   seg_init(struct seg *seg)
seg               797 sys/mem/vm.c   	seg->next = seg->prev = seg;
seg               798 sys/mem/vm.c   	seg->sh_next = seg->sh_prev = seg;
seg               799 sys/mem/vm.c   	seg->addr = PAGE_SIZE;
seg               800 sys/mem/vm.c   	seg->phys = 0;
seg               801 sys/mem/vm.c   	seg->size = USERLIMIT - PAGE_SIZE;
seg               802 sys/mem/vm.c   	seg->flags = SEG_FREE;
seg               809 sys/mem/vm.c   static struct seg *
seg               810 sys/mem/vm.c   seg_create(struct seg *prev, vaddr_t addr, size_t size)
seg               812 sys/mem/vm.c   	struct seg *seg;
seg               814 sys/mem/vm.c   	if ((seg = kmem_alloc(sizeof(*seg))) == NULL)
seg               817 sys/mem/vm.c   	seg->addr = addr;
seg               818 sys/mem/vm.c   	seg->size = size;
seg               819 sys/mem/vm.c   	seg->phys = 0;
seg               820 sys/mem/vm.c   	seg->flags = SEG_FREE;
seg               821 sys/mem/vm.c   	seg->sh_next = seg->sh_prev = seg;
seg               823 sys/mem/vm.c   	seg->next = prev->next;
seg               824 sys/mem/vm.c   	seg->prev = prev;
seg               825 sys/mem/vm.c   	prev->next->prev = seg;
seg               826 sys/mem/vm.c   	prev->next = seg;
seg               828 sys/mem/vm.c   	return seg;
seg               835 sys/mem/vm.c   seg_delete(struct seg *head, struct seg *seg)
seg               841 sys/mem/vm.c   	if (seg->flags & SEG_SHARED) {
seg               842 sys/mem/vm.c   		seg->sh_prev->sh_next = seg->sh_next;
seg               843 sys/mem/vm.c   		seg->sh_next->sh_prev = seg->sh_prev;
seg               844 sys/mem/vm.c   		if (seg->sh_prev == seg->sh_next)
seg               845 sys/mem/vm.c   			seg->sh_prev->flags &= ~SEG_SHARED;
seg               847 sys/mem/vm.c   	if (head != seg)
seg               848 sys/mem/vm.c   		kmem_free(seg);
seg               854 sys/mem/vm.c   static struct seg *
seg               855 sys/mem/vm.c   seg_lookup(struct seg *head, vaddr_t addr, size_t size)
seg               857 sys/mem/vm.c   	struct seg *seg;
seg               859 sys/mem/vm.c   	seg = head;
seg               861 sys/mem/vm.c   		if (seg->addr <= addr &&
seg               862 sys/mem/vm.c   		    seg->addr + seg->size >= addr + size) {
seg               863 sys/mem/vm.c   			return seg;
seg               865 sys/mem/vm.c   		seg = seg->next;
seg               866 sys/mem/vm.c   	} while (seg != head);
seg               873 sys/mem/vm.c   static struct seg *
seg               874 sys/mem/vm.c   seg_alloc(struct seg *head, size_t size)
seg               876 sys/mem/vm.c   	struct seg *seg;
seg               878 sys/mem/vm.c   	seg = head;
seg               880 sys/mem/vm.c   		if ((seg->flags & SEG_FREE) && seg->size >= size) {
seg               881 sys/mem/vm.c   			if (seg->size != size) {
seg               885 sys/mem/vm.c   				if (seg_create(seg,
seg               886 sys/mem/vm.c   					       seg->addr + size,
seg               887 sys/mem/vm.c   					       seg->size - size) == NULL)
seg               890 sys/mem/vm.c   			seg->size = size;
seg               891 sys/mem/vm.c   			return seg;
seg               893 sys/mem/vm.c   		seg = seg->next;
seg               894 sys/mem/vm.c   	} while (seg != head);
seg               902 sys/mem/vm.c   seg_free(struct seg *head, struct seg *seg)
seg               904 sys/mem/vm.c   	struct seg *prev, *next;
seg               906 sys/mem/vm.c   	ASSERT(seg->flags != SEG_FREE);
seg               908 sys/mem/vm.c   	seg->flags = SEG_FREE;
seg               913 sys/mem/vm.c   	if (seg->flags & SEG_SHARED) {
seg               914 sys/mem/vm.c   		seg->sh_prev->sh_next = seg->sh_next;
seg               915 sys/mem/vm.c   		seg->sh_next->sh_prev = seg->sh_prev;
seg               916 sys/mem/vm.c   		if (seg->sh_prev == seg->sh_next)
seg               917 sys/mem/vm.c   			seg->sh_prev->flags &= ~SEG_SHARED;
seg               922 sys/mem/vm.c   	next = seg->next;
seg               924 sys/mem/vm.c   		seg->next = next->next;
seg               925 sys/mem/vm.c   		next->next->prev = seg;
seg               926 sys/mem/vm.c   		seg->size += next->size;
seg               932 sys/mem/vm.c   	prev = seg->prev;
seg               933 sys/mem/vm.c   	if (seg != head && (prev->flags & SEG_FREE)) {
seg               934 sys/mem/vm.c   		prev->next = seg->next;
seg               935 sys/mem/vm.c   		seg->next->prev = prev;
seg               936 sys/mem/vm.c   		prev->size += seg->size;
seg               937 sys/mem/vm.c   		kmem_free(seg);
seg               944 sys/mem/vm.c   static struct seg *
seg               945 sys/mem/vm.c   seg_reserve(struct seg *head, vaddr_t addr, size_t size)
seg               947 sys/mem/vm.c   	struct seg *seg, *prev, *next;
seg               953 sys/mem/vm.c   	seg = seg_lookup(head, addr, size);
seg               954 sys/mem/vm.c   	if (seg == NULL || !(seg->flags & SEG_FREE))
seg               961 sys/mem/vm.c   	if (seg->addr != addr) {
seg               962 sys/mem/vm.c   		prev = seg;
seg               963 sys/mem/vm.c   		diff = (size_t)(addr - seg->addr);
seg               964 sys/mem/vm.c   		seg = seg_create(prev, addr, prev->size - diff);
seg               965 sys/mem/vm.c   		if (seg == NULL)
seg               972 sys/mem/vm.c   	if (seg->size != size) {
seg               973 sys/mem/vm.c   		next = seg_create(seg, seg->addr + size, seg->size - size);
seg               977 sys/mem/vm.c   				seg_free(head, seg);
seg               981 sys/mem/vm.c   		seg->size = size;
seg               983 sys/mem/vm.c   	seg->flags = 0;
seg               984 sys/mem/vm.c   	return seg;
seg                51 sys/mem/vm_nommu.c static void	   seg_init(struct seg *);
seg                52 sys/mem/vm_nommu.c static struct seg *seg_create(struct seg *, vaddr_t, size_t);
seg                53 sys/mem/vm_nommu.c static void	   seg_delete(struct seg *, struct seg *);
seg                54 sys/mem/vm_nommu.c static struct seg *seg_lookup(struct seg *, vaddr_t, size_t);
seg                55 sys/mem/vm_nommu.c static struct seg *seg_alloc(struct seg *, size_t);
seg                56 sys/mem/vm_nommu.c static void	   seg_free(struct seg *, struct seg *);
seg                57 sys/mem/vm_nommu.c static struct seg *seg_reserve(struct seg *, vaddr_t, size_t);
seg               114 sys/mem/vm_nommu.c 	struct seg *seg;
seg               127 sys/mem/vm_nommu.c 		if ((seg = seg_alloc(&map->head, size)) == NULL)
seg               129 sys/mem/vm_nommu.c 		start = seg->addr;
seg               135 sys/mem/vm_nommu.c 		if ((seg = seg_reserve(&map->head, start, size)) == NULL)
seg               138 sys/mem/vm_nommu.c 	seg->flags = SEG_READ | SEG_WRITE;
seg               142 sys/mem/vm_nommu.c 	*addr = (void *)seg->addr;
seg               185 sys/mem/vm_nommu.c 	struct seg *seg;
seg               193 sys/mem/vm_nommu.c 	seg = seg_lookup(&map->head, va, 1);
seg               194 sys/mem/vm_nommu.c 	if (seg == NULL || seg->addr != va || (seg->flags & SEG_FREE))
seg               200 sys/mem/vm_nommu.c 	if (!(seg->flags & SEG_SHARED) && !(seg->flags & SEG_MAPPED))
seg               201 sys/mem/vm_nommu.c 		page_free(seg->phys, seg->size);
seg               203 sys/mem/vm_nommu.c 	map->total -= seg->size;
seg               204 sys/mem/vm_nommu.c 	seg_free(&map->head, seg);
seg               249 sys/mem/vm_nommu.c 	struct seg *seg;
seg               258 sys/mem/vm_nommu.c 	seg = seg_lookup(&map->head, va, 1);
seg               259 sys/mem/vm_nommu.c 	if (seg == NULL || seg->addr != va || (seg->flags & SEG_FREE)) {
seg               265 sys/mem/vm_nommu.c 	if ((seg->flags & SEG_MAPPED) || (seg->flags & SEG_SHARED))
seg               271 sys/mem/vm_nommu.c 	if (seg->flags & SEG_WRITE) {
seg               280 sys/mem/vm_nommu.c 	seg->flags = new_flags;
seg               322 sys/mem/vm_nommu.c 	struct seg *seg, *tgt;
seg               344 sys/mem/vm_nommu.c 	seg = seg_lookup(&map->head, start, size);
seg               345 sys/mem/vm_nommu.c 	if (seg == NULL || (seg->flags & SEG_FREE))
seg               347 sys/mem/vm_nommu.c 	tgt = seg;
seg               353 sys/mem/vm_nommu.c 	if ((seg = seg_create(&curmap->head, start, size)) == NULL)
seg               355 sys/mem/vm_nommu.c 	seg->flags = tgt->flags | SEG_MAPPED;
seg               391 sys/mem/vm_nommu.c 	struct seg *seg, *tmp;
seg               397 sys/mem/vm_nommu.c 	seg = &map->head;
seg               399 sys/mem/vm_nommu.c 		if (seg->flags != SEG_FREE) {
seg               401 sys/mem/vm_nommu.c 			if (!(seg->flags & SEG_SHARED) &&
seg               402 sys/mem/vm_nommu.c 			    !(seg->flags & SEG_MAPPED)) {
seg               403 sys/mem/vm_nommu.c 				page_free(seg->phys, seg->size);
seg               406 sys/mem/vm_nommu.c 		tmp = seg;
seg               407 sys/mem/vm_nommu.c 		seg = seg->next;
seg               409 sys/mem/vm_nommu.c 	} while (seg != &map->head);
seg               456 sys/mem/vm_nommu.c 	struct seg *seg;
seg               474 sys/mem/vm_nommu.c 	if ((seg = seg_create(&map->head, start, size)) == NULL)
seg               477 sys/mem/vm_nommu.c 	seg->flags = SEG_READ | SEG_WRITE;
seg               506 sys/mem/vm_nommu.c 	struct seg *seg;
seg               514 sys/mem/vm_nommu.c 	seg = &map->head;
seg               519 sys/mem/vm_nommu.c 			info->virt = seg->addr;
seg               520 sys/mem/vm_nommu.c 			info->size = seg->size;
seg               521 sys/mem/vm_nommu.c 			info->flags = seg->flags;
seg               522 sys/mem/vm_nommu.c 			info->phys = seg->phys;
seg               526 sys/mem/vm_nommu.c 		seg = seg->next;
seg               527 sys/mem/vm_nommu.c 	} while (seg != &map->head);
seg               544 sys/mem/vm_nommu.c seg_init(struct seg *seg)
seg               547 sys/mem/vm_nommu.c 	seg->next = seg->prev = seg;
seg               548 sys/mem/vm_nommu.c 	seg->sh_next = seg->sh_prev = seg;
seg               549 sys/mem/vm_nommu.c 	seg->addr = 0;
seg               550 sys/mem/vm_nommu.c 	seg->phys = 0;
seg               551 sys/mem/vm_nommu.c 	seg->size = 0;
seg               552 sys/mem/vm_nommu.c 	seg->flags = SEG_FREE;
seg               559 sys/mem/vm_nommu.c static struct seg *
seg               560 sys/mem/vm_nommu.c seg_create(struct seg *prev, vaddr_t addr, size_t size)
seg               562 sys/mem/vm_nommu.c 	struct seg *seg;
seg               564 sys/mem/vm_nommu.c 	if ((seg = kmem_alloc(sizeof(*seg))) == NULL)
seg               567 sys/mem/vm_nommu.c 	seg->addr = addr;
seg               568 sys/mem/vm_nommu.c 	seg->size = size;
seg               569 sys/mem/vm_nommu.c 	seg->phys = (paddr_t)addr;
seg               570 sys/mem/vm_nommu.c 	seg->flags = SEG_FREE;
seg               571 sys/mem/vm_nommu.c 	seg->sh_next = seg->sh_prev = seg;
seg               573 sys/mem/vm_nommu.c 	seg->next = prev->next;
seg               574 sys/mem/vm_nommu.c 	seg->prev = prev;
seg               575 sys/mem/vm_nommu.c 	prev->next->prev = seg;
seg               576 sys/mem/vm_nommu.c 	prev->next = seg;
seg               578 sys/mem/vm_nommu.c 	return seg;
seg               585 sys/mem/vm_nommu.c seg_delete(struct seg *head, struct seg *seg)
seg               591 sys/mem/vm_nommu.c 	if (seg->flags & SEG_SHARED) {
seg               592 sys/mem/vm_nommu.c 		seg->sh_prev->sh_next = seg->sh_next;
seg               593 sys/mem/vm_nommu.c 		seg->sh_next->sh_prev = seg->sh_prev;
seg               594 sys/mem/vm_nommu.c 		if (seg->sh_prev == seg->sh_next)
seg               595 sys/mem/vm_nommu.c 			seg->sh_prev->flags &= ~SEG_SHARED;
seg               597 sys/mem/vm_nommu.c 	if (head != seg)
seg               598 sys/mem/vm_nommu.c 		kmem_free(seg);
seg               604 sys/mem/vm_nommu.c static struct seg *
seg               605 sys/mem/vm_nommu.c seg_lookup(struct seg *head, vaddr_t addr, size_t size)
seg               607 sys/mem/vm_nommu.c 	struct seg *seg;
seg               609 sys/mem/vm_nommu.c 	seg = head;
seg               611 sys/mem/vm_nommu.c 		if (seg->addr <= addr &&
seg               612 sys/mem/vm_nommu.c 		    seg->addr + seg->size >= addr + size) {
seg               613 sys/mem/vm_nommu.c 			return seg;
seg               615 sys/mem/vm_nommu.c 		seg = seg->next;
seg               616 sys/mem/vm_nommu.c 	} while (seg != head);
seg               623 sys/mem/vm_nommu.c static struct seg *
seg               624 sys/mem/vm_nommu.c seg_alloc(struct seg *head, size_t size)
seg               626 sys/mem/vm_nommu.c 	struct seg *seg;
seg               632 sys/mem/vm_nommu.c 	if ((seg = seg_create(head, (vaddr_t)pa, size)) == NULL) {
seg               636 sys/mem/vm_nommu.c 	return seg;
seg               643 sys/mem/vm_nommu.c seg_free(struct seg *head, struct seg *seg)
seg               645 sys/mem/vm_nommu.c 	ASSERT(seg->flags != SEG_FREE);
seg               650 sys/mem/vm_nommu.c 	if (seg->flags & SEG_SHARED) {
seg               651 sys/mem/vm_nommu.c 		seg->sh_prev->sh_next = seg->sh_next;
seg               652 sys/mem/vm_nommu.c 		seg->sh_next->sh_prev = seg->sh_prev;
seg               653 sys/mem/vm_nommu.c 		if (seg->sh_prev == seg->sh_next)
seg               654 sys/mem/vm_nommu.c 			seg->sh_prev->flags &= ~SEG_SHARED;
seg               656 sys/mem/vm_nommu.c 	seg->prev->next = seg->next;
seg               657 sys/mem/vm_nommu.c 	seg->next->prev = seg->prev;
seg               659 sys/mem/vm_nommu.c 	kmem_free(seg);
seg               665 sys/mem/vm_nommu.c static struct seg *
seg               666 sys/mem/vm_nommu.c seg_reserve(struct seg *head, vaddr_t addr, size_t size)
seg               668 sys/mem/vm_nommu.c 	struct seg *seg;
seg               676 sys/mem/vm_nommu.c 	if ((seg = seg_create(head, (vaddr_t)pa, size)) == NULL) {
seg               680 sys/mem/vm_nommu.c 	return seg;