if (!defined &_VM_PAGE_) {
    eval 'sub _VM_PAGE_ {1;}';
    eval 'sub PG_INACTIVE {0x0001;}';
    eval 'sub PG_ACTIVE {0x0002;}';
    eval 'sub PG_LAUNDRY {0x0004;}';
    eval 'sub PG_CLEAN {0x0008;}';
    eval 'sub PG_BUSY {0x0010;}';
    eval 'sub PG_WANTED {0x0020;}';
    eval 'sub PG_TABLED {0x0040;}';
    eval 'sub PG_COPYONWRITE {0x0080;}';
    eval 'sub PG_FICTITIOUS {0x0100;}';
    eval 'sub PG_FAKE {0x0200;}';
    eval 'sub PG_FILLED {0x0400;}';
    eval 'sub PG_DIRTY {0x0800;}';
    eval 'sub PG_FAULTING {0x2000;}';
    eval 'sub PG_PAGEROWNED {0x4000;}';
    eval 'sub PG_PTPAGE {0x8000;}';
    if ( &VM_PAGE_DEBUG) {
	if (!defined &MACHINE_NONCONTIG) {
	    eval 'sub VM_PAGE_CHECK {
	        local($mem) = @_;
	        eval "{  &if ((( $mem) < ( & &vm_page_array[0])) || (( $mem) > ( & &vm_page_array[ &last_page- &first_page])) || (($mem-> &flags & ( &PG_ACTIVE |  &PG_INACTIVE)) == ( &PG_ACTIVE |  &PG_INACTIVE)))  &panic(\\"vm_page_check: not valid!\\"); }";
	    }';
	}
	else {
	    eval 'sub VM_PAGE_CHECK {
	        local($mem) = @_;
	        eval "{  &if ((( $mem) < ( & &vm_page_array[0])) || (( $mem) > ( & &vm_page_array[ &vm_page_count])) || (($mem-> &flags & ( &PG_ACTIVE |  &PG_INACTIVE)) == ( &PG_ACTIVE |  &PG_INACTIVE)))  &panic(\\"vm_page_check: not valid!\\"); }";
	    }';
	}
    }
    else {
	eval 'sub VM_PAGE_CHECK {
	    local($mem) = @_;
	    eval "";
	}';
    }
    if (defined &KERNEL) {
	if (!defined &MACHINE_NONCONTIG) {
	}
	else {
	}
	eval 'sub VM_PAGE_TO_PHYS {
	    local($entry) = @_;
	    eval "(($entry)-> &phys_addr)";
	}';
	if (!defined &MACHINE_NONCONTIG) {
	    eval 'sub IS_VM_PHYSADDR {
	        local($pa) = @_;
	        eval "(($pa) >=  &first_phys_addr && ($pa) <=  &last_phys_addr)";
	    }';
	    eval 'sub PHYS_TO_VM_PAGE {
	        local($pa) = @_;
	        eval "(& &vm_page_array[ &atop($pa) -  &first_page ])";
	    }';
	}
	else {
	    eval 'sub IS_VM_PHYSADDR {
	        local($pa) = @_;
	        eval "( &pmap_page_index($pa) >= 0)";
	    }';
	    eval 'sub PHYS_TO_VM_PAGE {
	        local($pa) = @_;
	        eval "(& &vm_page_array[ &pmap_page_index($pa) -  &first_page])";
	    }';
	}
	eval 'sub PAGE_ASSERT_WAIT {
	    local($m, $interruptible) = @_;
	    eval "{ ($m)-> &flags |=  &PG_WANTED;  &assert_wait( ($m), ($interruptible)); }";
	}';
	eval 'sub PAGE_WAKEUP {
	    local($m) = @_;
	    eval "{ ($m)-> &flags &= ~ &PG_BUSY;  &if (($m)-> &flags &  &PG_WANTED) { ($m)-> &flags &= ~ &PG_WANTED;  &thread_wakeup( ($m)); } }";
	}';
	eval 'sub vm_page_lock_queues {
	    eval " &simple_lock(& &vm_page_queue_lock)";
	}';
	eval 'sub vm_page_unlock_queues {
	    eval " &simple_unlock(& &vm_page_queue_lock)";
	}';
	eval 'sub vm_page_set_modified {
	    local($m) = @_;
	    eval "{ ($m)-> &flags &= ~ &PG_CLEAN; }";
	}';
	if (!defined &MACHINE_NONCONTIG) {
	    eval 'sub VM_PAGE_INIT {
	        local($mem, $obj, $offset) = @_;
	        eval "{ ($mem)-> &flags =  &PG_BUSY |  &PG_CLEAN |  &PG_FAKE;  &vm_page_insert(($mem), ($obj), ($offset)); ($mem)-> &wire_count = 0; }";
	    }';
	}
	else {
	    eval 'sub VM_PAGE_INIT {
	        local($mem, $obj, $offset) = @_;
	        eval "{ ($mem)-> &flags =  &PG_BUSY |  &PG_CLEAN |  &PG_FAKE;  &if ($obj)  &vm_page_insert(($mem), ($obj), ($offset));  &else ($mem)-> &object =  &NULL; ($mem)-> &wire_count = 0; }";
	    }';
	}
	if (defined &MACHINE_NONCONTIG) {
	}
	if (defined &MACHINE_NONCONTIG) {
	}
	if (!defined &MACHINE_NONCONTIG) {
	}
    }
}
1;
