[BACK]Return to pmap.h CVS log [TXT][DIR] Up to [local] / sys / arch / solbourne / include

Annotation of sys/arch/solbourne/include/pmap.h, Revision 1.1.1.1

1.1       nbrk        1: /*     $OpenBSD: pmap.h,v 1.1 2005/04/19 21:30:18 miod Exp $   */
                      2: /*
                      3:  * Copyright (c) 2005, Miodrag Vallat
                      4:  *
                      5:  * Redistribution and use in source and binary forms, with or without
                      6:  * modification, are permitted provided that the following conditions
                      7:  * are met:
                      8:  * 1. Redistributions of source code must retain the above copyright
                      9:  *    notice, this list of conditions and the following disclaimer.
                     10:  * 2. Redistributions in binary form must reproduce the above copyright
                     11:  *    notice, this list of conditions and the following disclaimer in the
                     12:  *    documentation and/or other materials provided with the distribution.
                     13:  *
                     14:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
                     15:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
                     16:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
                     17:  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
                     18:  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
                     19:  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
                     20:  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
                     21:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
                     22:  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
                     23:  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
                     24:  * POSSIBILITY OF SUCH DAMAGE.
                     25:  */
                     26:
                     27: #ifndef        _SOLBOURNE_PMAP_H_
                     28: #define _SOLBOURNE_PMAP_H_
                     29:
                     30: #include <machine/pte.h>
                     31:
                     32: /*
                     33:  * PMAP structure
                     34:  */
                     35: struct pmap {
                     36:        pd_entry_t              *pm_segtab;     /* first level table */
                     37:        paddr_t                 pm_psegtab;     /* pa of above */
                     38:
                     39:        int                     pm_refcount;    /* reference count */
                     40:        struct simplelock       pm_lock;
                     41:        struct pmap_statistics  pm_stats;       /* pmap statistics */
                     42: };
                     43:
                     44: typedef struct pmap *pmap_t;
                     45:
                     46: /*
                     47:  * Extra constants passed in the low bits of pa in pmap_enter() to
                     48:  * request specific memory attributes.
                     49:  */
                     50:
                     51: #define        PMAP_NC         1
                     52: #define        PMAP_OBIO       PMAP_NC
                     53: #define        PMAP_BWS        2
                     54:
                     55: /*
                     56:  * Macro to pass iospace bits in the low bits of pa in pmap_enter().
                     57:  * Provided for source code compatibility - we don't need such bits.
                     58:  */
                     59:
                     60: #define        PMAP_IOENC(x)   0
                     61:
                     62: #ifdef _KERNEL
                     63:
                     64: extern struct pmap kernel_pmap_store;
                     65:
                     66: #define        kvm_recache(addr, npages)       kvm_setcache(addr, npages, 1)
                     67: #define        kvm_uncache(addr, npages)       kvm_setcache(addr, npages, 0)
                     68: #define        pmap_copy(a,b,c,d,e)            do { /* nothing */ } while (0)
                     69: #define        pmap_deactivate(p)              do { /* nothing */ } while (0)
                     70: #define        pmap_kernel()                   (&kernel_pmap_store)
                     71: #define        pmap_phys_address(frame)        ptoa(frame)
                     72: #define        pmap_resident_count(p)          ((p)->pm_stats.resident_count)
                     73: #define        pmap_update(p)                  do { /* nothing */ } while (0)
                     74: #define        pmap_wired_count(p)             ((p)->pm_stats.wired_count)
                     75:
                     76: #define PMAP_PREFER(fo, ap)            pmap_prefer((fo), (ap))
                     77:
                     78: struct proc;
                     79: void           kvm_setcache(caddr_t, int, int);
                     80: void           switchexit(struct proc *);              /* locore.s */
                     81: void           pmap_activate(struct proc *);
                     82: void           pmap_bootstrap(size_t);
                     83: void           pmap_cache_enable(void);
                     84: void           pmap_changeprot(pmap_t, vaddr_t, vm_prot_t, int);
                     85: boolean_t      pmap_clear_modify(struct vm_page *);
                     86: boolean_t      pmap_clear_reference(struct vm_page *);
                     87: void           pmap_copy_page(struct vm_page *, struct vm_page *);
                     88: pmap_t         pmap_create(void);
                     89: void           pmap_destroy(pmap_t);
                     90: int            pmap_enter(pmap_t, vaddr_t, paddr_t, vm_prot_t, int);
                     91: boolean_t      pmap_extract(pmap_t, vaddr_t, paddr_t *);
                     92: void           pmap_init(void);
                     93: boolean_t      pmap_is_modified(struct vm_page *);
                     94: boolean_t      pmap_is_referenced(struct vm_page *);
                     95: void           pmap_kenter_pa(vaddr_t, paddr_t, vm_prot_t);
                     96: void           pmap_kremove(vaddr_t, vsize_t);
                     97: vaddr_t                pmap_map(vaddr_t, paddr_t, paddr_t, int);
                     98: int            pmap_pa_exists(paddr_t);
                     99: void           pmap_page_protect(struct vm_page *, vm_prot_t);
                    100: void           pmap_prefer(vaddr_t, vaddr_t *);
                    101: void           pmap_proc_iflush(struct proc *, vaddr_t, vsize_t);
                    102: void           pmap_protect(pmap_t, vaddr_t, vaddr_t, vm_prot_t);
                    103: void           pmap_reference(pmap_t);
                    104: void           pmap_release(pmap_t);
                    105: void           pmap_redzone(void);
                    106: void           pmap_remove(pmap_t, vaddr_t, vaddr_t);
                    107: void           pmap_unwire(pmap_t, vaddr_t);
                    108: void           pmap_virtual_space(vaddr_t *, vaddr_t *);
                    109: void           pmap_writetext(unsigned char *, int);
                    110: void           pmap_zero_page(struct vm_page *);
                    111:
                    112: #endif /* _KERNEL */
                    113:
                    114: #endif /* _SOLBOURNE_PMAP_H_ */

CVSweb