Rev 1915 | Rev 2007 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 1915 | Rev 1954 | ||
---|---|---|---|
Line 190... | Line 190... | ||
190 | } |
190 | } |
191 | spinlock_unlock(&inactive_as_with_asid_lock); |
191 | spinlock_unlock(&inactive_as_with_asid_lock); |
192 | 192 | ||
193 | /* |
193 | /* |
194 | * Destroy address space areas of the address space. |
194 | * Destroy address space areas of the address space. |
195 | * The B+tee must be walked carefully because it is |
195 | * The B+tree must be walked carefully because it is |
196 | * also being destroyed. |
196 | * also being destroyed. |
197 | */ |
197 | */ |
198 | for (cond = true; cond; ) { |
198 | for (cond = true; cond; ) { |
199 | btree_node_t *node; |
199 | btree_node_t *node; |
200 | 200 | ||
Line 414... | Line 414... | ||
414 | } |
414 | } |
415 | 415 | ||
416 | /* |
416 | /* |
417 | * Finish TLB shootdown sequence. |
417 | * Finish TLB shootdown sequence. |
418 | */ |
418 | */ |
419 | tlb_invalidate_pages(AS->asid, area->base + pages*PAGE_SIZE, area->pages - pages); |
419 | tlb_invalidate_pages(as->asid, area->base + pages*PAGE_SIZE, area->pages - pages); |
420 | tlb_shootdown_finalize(); |
420 | tlb_shootdown_finalize(); |
421 | 421 | ||
422 | /* |
422 | /* |
423 | * Invalidate software translation caches (e.g. TSB on sparc64). |
423 | * Invalidate software translation caches (e.g. TSB on sparc64). |
424 | */ |
424 | */ |
Line 607... | Line 607... | ||
607 | return EPERM; |
607 | return EPERM; |
608 | } |
608 | } |
609 | 609 | ||
610 | /* |
610 | /* |
611 | * Now we are committed to sharing the area. |
611 | * Now we are committed to sharing the area. |
612 | * First prepare the area for sharing. |
612 | * First, prepare the area for sharing. |
613 | * Then it will be safe to unlock it. |
613 | * Then it will be safe to unlock it. |
614 | */ |
614 | */ |
615 | sh_info = src_area->sh_info; |
615 | sh_info = src_area->sh_info; |
616 | if (!sh_info) { |
616 | if (!sh_info) { |
617 | sh_info = (share_info_t *) malloc(sizeof(share_info_t), 0); |
617 | sh_info = (share_info_t *) malloc(sizeof(share_info_t), 0); |