Home | History | Annotate | Download | only in sun3

Lines Matching defs:pmegp

480 #define is_pmeg_wired(pmegp) (pmegp->pmeg_wired != 0)
483 pmeg_set_wiring(pmeg_t pmegp, vaddr_t va, int flag)
491 pmegp->pmeg_wired |= mask;
493 pmegp->pmeg_wired &= ~mask;
679 pmeg_t pmegp;
682 pmegp = &pmeg_array[sme];
684 if (pmegp->pmeg_reserved) {
688 if (pmegp->pmeg_owner) {
694 pmegp->pmeg_owner = kernel_pmap;
695 pmegp->pmeg_reserved++; /* keep count, just in case */
696 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
697 pmegp->pmeg_qstate = PMEGQ_NONE;
749 pmeg_clean(pmeg_t pmegp)
758 sme = pmegp->pmeg_index;
776 pmeg_t pmegp, pmegp_first;
778 pmegp = TAILQ_FIRST(&pmeg_free_queue);
779 if (pmegp == NULL)
785 pmegp = TAILQ_FIRST(&pmeg_free_queue);
786 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
788 pmegp->pmeg_qstate = PMEGQ_NONE;
789 pmeg_clean(pmegp);
790 pmegp->pmeg_qstate = PMEGQ_FREE;
792 TAILQ_INSERT_TAIL(&pmeg_free_queue, pmegp, pmeg_link);
794 if (pmegp == pmegp_first)
797 pmegp_first = pmegp;
808 pmeg_t pmegp;
819 pmegp = TAILQ_FIRST(&pmeg_free_queue);
820 if (!pmegp) {
822 pmegp = TAILQ_FIRST(&pmeg_inactive_queue);
823 if (!pmegp) {
825 pmegp = TAILQ_FIRST(&pmeg_active_queue);
827 if (!pmegp) {
836 pmap_remove1(pmegp->pmeg_owner,
837 pmegp->pmeg_va,
838 pmegp->pmeg_va + NBSG);
842 pmegp = TAILQ_FIRST(&pmeg_free_queue);
844 if (pmegp == NULL)
846 if ((pmegp->pmeg_qstate != PMEGQ_FREE) ||
847 (pmegp->pmeg_index == SEGINV) ||
848 (pmegp->pmeg_vpages))
849 panic("pmeg_allocate: bad pmegp=%p", pmegp);
852 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
853 db_printf("pmeg_allocate: watch pmegp=%p\n", pmegp);
858 TAILQ_REMOVE(&pmeg_free_queue, pmegp, pmeg_link);
861 pmegp->pmeg_owner = pmap;
862 pmegp->pmeg_version = pmap->pm_version;
863 pmegp->pmeg_va = va;
864 pmegp->pmeg_wired = 0;
865 pmegp->pmeg_reserved = 0;
866 pmegp->pmeg_vpages = 0;
868 TAILQ_INSERT_TAIL(&pmeg_kernel_queue, pmegp, pmeg_link);
869 pmegp->pmeg_qstate = PMEGQ_KERNEL;
871 TAILQ_INSERT_TAIL(&pmeg_active_queue, pmegp, pmeg_link);
872 pmegp->pmeg_qstate = PMEGQ_ACTIVE;
875 return pmegp;
884 pmeg_release(pmeg_t pmegp)
890 if ((pmegp->pmeg_owner == kernel_pmap) ||
891 (pmegp->pmeg_qstate != PMEGQ_ACTIVE))
892 panic("pmeg_release: bad pmeg=%p", pmegp);
895 TAILQ_REMOVE(&pmeg_active_queue, pmegp, pmeg_link);
896 pmegp->pmeg_qstate = PMEGQ_INACTIVE;
897 TAILQ_INSERT_TAIL(&pmeg_inactive_queue, pmegp, pmeg_link);
905 pmeg_free(pmeg_t pmegp)
912 if (pmegp->pmeg_vpages != 0)
916 switch (pmegp->pmeg_qstate) {
918 TAILQ_REMOVE(&pmeg_active_queue, pmegp, pmeg_link);
921 TAILQ_REMOVE(&pmeg_inactive_queue, pmegp, pmeg_link);
924 TAILQ_REMOVE(&pmeg_kernel_queue, pmegp, pmeg_link);
932 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
934 pmegp->pmeg_index);
939 pmegp->pmeg_owner = NULL;
940 pmegp->pmeg_qstate = PMEGQ_FREE;
941 TAILQ_INSERT_TAIL(&pmeg_free_queue, pmegp, pmeg_link);
952 pmeg_t pmegp;
975 pmegp = pmeg_p(sme);
978 if (pmegp->pmeg_index == pmap_db_watchpmeg) {
979 db_printf("pmeg_cache: watch pmeg 0x%x\n", pmegp->pmeg_index);
988 if ((pmegp->pmeg_owner != pmap) ||
989 (pmegp->pmeg_version != pmap->pm_version) ||
990 (pmegp->pmeg_va != va))
994 pmeg_print(pmegp);
1003 if (pmegp->pmeg_qstate != PMEGQ_INACTIVE)
1004 panic("pmeg_cache: pmeg was taken: %p", pmegp);
1007 TAILQ_REMOVE(&pmeg_inactive_queue, pmegp, pmeg_link);
1008 pmegp->pmeg_qstate = PMEGQ_ACTIVE;
1009 TAILQ_INSERT_TAIL(&pmeg_active_queue, pmegp, pmeg_link);
1011 return pmegp;
2013 pmeg_t pmegp;
2058 pmegp = pmeg_p(sme);
2065 if (pmegp->pmeg_owner != pmap)
2070 pmegp = pmeg_allocate(pmap, segva);
2071 sme = pmegp->pmeg_index;
2105 pmegp->pmeg_vpages--;
2129 pmeg_set_wiring(pmegp, pgva, wired);
2148 pmegp->pmeg_vpages++;
2157 pmeg_t pmegp;
2227 pmegp = pmeg_p(sme);
2233 if (pmegp->pmeg_owner != pmap)
2238 pmegp = pmeg_cache(pmap, segva);
2239 if (pmegp) {
2241 sme = pmegp->pmeg_index;
2245 pmegp = pmeg_allocate(pmap, segva);
2246 sme = pmegp->pmeg_index;
2280 pmegp->pmeg_vpages--;
2305 /* pmeg_set_wiring(pmegp, pgva, wired); */
2324 pmegp->pmeg_vpages++;
2332 pmeg_t pmegp;
2393 pmegp = pmeg_p(sme);
2399 if (pmegp->pmeg_owner != pmap)
2405 pmegp = pmeg_allocate(pmap, segva);
2406 sme = pmegp->pmeg_index;
2418 pmeg_set_wiring(pmegp, va, true);
2432 pmegp->pmeg_vpages++;
2442 pmeg_t pmegp;
2459 pmegp = pmeg_p(sme);
2499 KASSERT(pmegp->pmeg_vpages > 0);
2500 pmegp->pmeg_vpages--;
2503 KASSERT(pmegp->pmeg_vpages >= 0);
2504 if (pmegp->pmeg_vpages == 0) {
2507 if (is_pmeg_wired(pmegp)) {
2510 "pmeg: %p\n", pmegp);
2518 pmegp->pmeg_index);
2528 pmeg_free(pmegp);
2589 pmeg_t pmegp;
2641 pmegp = pmeg_cache(pmap, segva);
2642 if (pmegp) {
2645 sme = pmegp->pmeg_index;
2807 pmeg_t pmegp;
2834 pmegp = pmeg_p(sme);
2835 pmegp->pmeg_wired &= ~wiremask;
3069 pmeg_t pmegp = pmeg_p(sme);
3071 if ((pmegp->pmeg_va != segva) ||
3072 (pmegp->pmeg_owner != pmap) ||
3073 (pmegp->pmeg_version != pmap->pm_version))
3075 panic("pmap_protect_mmu: bad pmeg=%p", pmegp);
3077 if (pmegp->pmeg_vpages < 0)
3079 if (pmegp->pmeg_vpages == 0)
3266 pmeg_t pmegp;
3291 pmegp = pmeg_p(sme);
3296 if ((pmegp->pmeg_va != segva) ||
3297 (pmegp->pmeg_owner != pmap) ||
3298 (pmegp->pmeg_version != pmap->pm_version))
3300 panic("pmap_remove_mmu: bad pmeg=%p", pmegp);
3302 if (pmegp->pmeg_vpages < 0)
3304 if (pmegp->pmeg_vpages == 0)
3347 KASSERT(pmegp->pmeg_vpages > 0);
3348 pmegp->pmeg_vpages--;
3352 KASSERT(pmegp->pmeg_vpages >= 0);
3353 if (pmegp->pmeg_vpages == 0) {
3356 if (is_pmeg_wired(pmegp)) {
3359 pmegp);
3367 pmap->pm_ctxnum, segva, pmegp->pmeg_index);
3382 pmeg_free(pmegp);
3393 pmeg_t pmegp;
3412 pmegp = pmeg_p(sme);
3440 KASSERT(pmegp->pmeg_vpages > 0);
3441 pmegp->pmeg_vpages--;
3452 KASSERT(pmegp->pmeg_vpages >= 0);
3453 if (pmegp->pmeg_vpages == 0) {
3455 if (is_pmeg_wired(pmegp)) {
3459 pmegp);
3466 pmeg_free(pmegp);
3762 pmeg_print(pmeg_t pmegp)
3765 TAILQ_NEXT(pmegp, pmeg_link),
3766 TAILQ_PREV(pmegp, pmeg_tailq, pmeg_link));
3768 pmegp->pmeg_index, pmegp->pmeg_owner, pmegp->pmeg_version);
3770 pmegp->pmeg_va, pmegp->pmeg_wired,
3771 pmegp->pmeg_reserved, pmegp->pmeg_vpages,
3772 pmegp->pmeg_qstate);