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

Annotation of sys/arch/powerpc/include/pte.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: pte.h,v 1.9 2005/12/17 07:31:26 miod Exp $    */
        !             2: /*     $NetBSD: pte.h,v 1.1 1996/09/30 16:34:32 ws Exp $       */
        !             3:
        !             4: /*-
        !             5:  * Copyright (C) 1995, 1996 Wolfgang Solfrank.
        !             6:  * Copyright (C) 1995, 1996 TooLs GmbH.
        !             7:  * All rights reserved.
        !             8:  *
        !             9:  * Redistribution and use in source and binary forms, with or without
        !            10:  * modification, are permitted provided that the following conditions
        !            11:  * are met:
        !            12:  * 1. Redistributions of source code must retain the above copyright
        !            13:  *    notice, this list of conditions and the following disclaimer.
        !            14:  * 2. Redistributions in binary form must reproduce the above copyright
        !            15:  *    notice, this list of conditions and the following disclaimer in the
        !            16:  *    documentation and/or other materials provided with the distribution.
        !            17:  * 3. All advertising materials mentioning features or use of this software
        !            18:  *    must display the following acknowledgement:
        !            19:  *     This product includes software developed by TooLs GmbH.
        !            20:  * 4. The name of TooLs GmbH may not be used to endorse or promote products
        !            21:  *    derived from this software without specific prior written permission.
        !            22:  *
        !            23:  * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR
        !            24:  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
        !            25:  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
        !            26:  * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
        !            27:  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
        !            28:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
        !            29:  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
        !            30:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
        !            31:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
        !            32:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
        !            33:  */
        !            34:
        !            35: #ifndef        _POWERPC_PTE_H_
        !            36: #define        _POWERPC_PTE_H_
        !            37:
        !            38: #include <sys/queue.h>
        !            39:
        !            40: /*
        !            41:  * Page Table Entries
        !            42:  */
        !            43: #ifndef        _LOCORE
        !            44: struct pte_32 {
        !            45:        u_int32_t pte_hi;
        !            46:        u_int32_t pte_lo;
        !            47: };
        !            48: struct pte_64 {
        !            49:        u_int64_t pte_hi;
        !            50:        u_int64_t pte_lo;
        !            51: };
        !            52: #endif /* _LOCORE */
        !            53:
        !            54: /* 32 bit */
        !            55: /* High word: */
        !            56: #define        PTE_VALID_32    0x80000000
        !            57: #define        PTE_VSID_SHIFT_32       7
        !            58: #define        PTE_HID_32      0x00000040
        !            59: #define        PTE_API_32      0x0000003f
        !            60:  /* Low word: */
        !            61: #define        PTE_RPGN_32     0xfffff000
        !            62: #define        PTE_REF_32      0x00000100
        !            63: #define        PTE_CHG_32      0x00000080
        !            64: #define        PTE_WIM_32      0x00000078
        !            65: #define        PTE_W_32        0x00000040
        !            66: #define        PTE_EXE_32      0x00000040 /* only used in pmap_attr, same as PTE_W */
        !            67: #define        PTE_I_32        0x00000020
        !            68: #define        PTE_M_32        0x00000010
        !            69: #define        PTE_G_32        0x00000008
        !            70: #define        PTE_PP_32       0x00000003
        !            71: #define        PTE_RO_32       0x00000003
        !            72: #define        PTE_RW_32       0x00000002
        !            73:
        !            74:
        !            75: /* 64 bit */
        !            76: /* High doubleword: */
        !            77: #define        PTE_VALID_64            0x0000000000000001ULL
        !            78: #define        PTE_AVPN_SHIFT_64       7
        !            79: #define PTE_AVPN_64            0xffffffffffffff80ULL
        !            80: #define PTE_API_SHIFT_64       7
        !            81: #define PTE_API_64             0x0000000000000f80ULL
        !            82: #define PTE_VSID_SHIFT_64  12
        !            83: #define PTE_VSID_64            0xfffffffffffff000ULL
        !            84: #define        PTE_HID_64              0x0000000000000002ULL
        !            85: /* Low word: */
        !            86: #define        PTE_RPGN_64             0x3ffffffffffff000ULL
        !            87: #define        PTE_REF_64              0x0000000000000100ULL
        !            88: #define        PTE_CHG_64              0x0000000000000080ULL
        !            89: #define        PTE_WIMG_64             0x0000000000000078ULL
        !            90: #define        PTE_W_64                0x0000000000000040ULL
        !            91: #define PTE_EXE_64             PTE_W
        !            92: #define        PTE_I_64                0x0000000000000020ULL
        !            93: #define        PTE_M_64                0x0000000000000010ULL
        !            94: #define        PTE_G_64                0x0000000000000008ULL
        !            95: #define PTE_N_64               0x0000000000000004ULL
        !            96: #define        PTE_PP_64               0x0000000000000003ULL
        !            97: #define        PTE_RO_64               0x0000000000000003ULL
        !            98: #define        PTE_RW_64               0x0000000000000002ULL
        !            99:
        !           100: #ifndef        _LOCORE
        !           101: typedef        struct pte_32 pte32_t;
        !           102: typedef        struct pte_64 pte64_t;
        !           103: #endif /* _LOCORE */
        !           104:
        !           105: /*
        !           106:  * Extract bits from address
        !           107:  */
        !           108: #define        ADDR_SR_SHIFT           28
        !           109: #define        ADDR_PIDX               0x0ffff000
        !           110: #define        ADDR_PIDX_SHIFT         12
        !           111: #define        ADDR_API_SHIFT_32       22
        !           112: #define        ADDR_API_SHIFT_64       16
        !           113: #define        ADDR_POFF               0x00000fff
        !           114:
        !           115: #ifndef        _LOCORE
        !           116: #ifdef _KERNEL
        !           117: extern struct pte *ptable;
        !           118: extern int ptab_cnt;
        !           119: #endif /* _KERNEL */
        !           120: #endif /* _LOCORE */
        !           121:
        !           122: /*
        !           123:  * Bits in DSISR:
        !           124:  */
        !           125: #define        DSISR_DIRECT    0x80000000
        !           126: #define        DSISR_NOTFOUND  0x40000000
        !           127: #define        DSISR_PROTECT   0x08000000
        !           128: #define        DSISR_INVRX     0x04000000
        !           129: #define        DSISR_STORE     0x02000000
        !           130: #define        DSISR_DABR      0x00400000
        !           131: #define        DSISR_SEGMENT   0x00200000
        !           132: #define        DSISR_EAR       0x00100000
        !           133:
        !           134: /*
        !           135:  * Bits in SRR1 on ISI:
        !           136:  */
        !           137: #define        ISSRR1_NOTFOUND 0x40000000
        !           138: #define        ISSRR1_DIRECT   0x10000000
        !           139: #define        ISSRR1_PROTECT  0x08000000
        !           140: #define        ISSRR1_SEGMENT  0x00200000
        !           141:
        !           142: #ifdef _KERNEL
        !           143: #ifndef        _LOCORE
        !           144: extern u_int dsisr(void);
        !           145: extern vaddr_t dar(void);
        !           146: #endif /* _KERNEL */
        !           147: #endif /* _LOCORE */
        !           148: #endif /* _POWERPC_PTE_H_ */

CVSweb