1f9bac91bSBenno Rice /*- 2f9bac91bSBenno Rice * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3f9bac91bSBenno Rice * Copyright (C) 1995, 1996 TooLs GmbH. 4f9bac91bSBenno Rice * All rights reserved. 5f9bac91bSBenno Rice * 6f9bac91bSBenno Rice * Redistribution and use in source and binary forms, with or without 7f9bac91bSBenno Rice * modification, are permitted provided that the following conditions 8f9bac91bSBenno Rice * are met: 9f9bac91bSBenno Rice * 1. Redistributions of source code must retain the above copyright 10f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer. 11f9bac91bSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 12f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer in the 13f9bac91bSBenno Rice * documentation and/or other materials provided with the distribution. 14f9bac91bSBenno Rice * 3. All advertising materials mentioning features or use of this software 15f9bac91bSBenno Rice * must display the following acknowledgement: 16f9bac91bSBenno Rice * This product includes software developed by TooLs GmbH. 17f9bac91bSBenno Rice * 4. The name of TooLs GmbH may not be used to endorse or promote products 18f9bac91bSBenno Rice * derived from this software without specific prior written permission. 19f9bac91bSBenno Rice * 20f9bac91bSBenno Rice * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 21f9bac91bSBenno Rice * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 22f9bac91bSBenno Rice * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 23f9bac91bSBenno Rice * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 24f9bac91bSBenno Rice * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25f9bac91bSBenno Rice * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26f9bac91bSBenno Rice * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27f9bac91bSBenno Rice * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28f9bac91bSBenno Rice * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29f9bac91bSBenno Rice * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30f9bac91bSBenno Rice * 31f9bac91bSBenno Rice * $NetBSD: pte.h,v 1.2 1998/08/31 14:43:40 tsubai Exp $ 32f9bac91bSBenno Rice * $FreeBSD$ 33f9bac91bSBenno Rice */ 34f9bac91bSBenno Rice 35f9bac91bSBenno Rice #ifndef _MACHINE_PTE_H_ 36f9bac91bSBenno Rice #define _MACHINE_PTE_H_ 37f9bac91bSBenno Rice 38f9bac91bSBenno Rice /* 39f9bac91bSBenno Rice * Page Table Entries 40f9bac91bSBenno Rice */ 41f9bac91bSBenno Rice #ifndef LOCORE 42f9bac91bSBenno Rice #include <sys/queue.h> 43f9bac91bSBenno Rice 44f9bac91bSBenno Rice struct pte { 45f9bac91bSBenno Rice u_int pte_hi; 46f9bac91bSBenno Rice u_int pte_lo; 47f9bac91bSBenno Rice }; 485244eac9SBenno Rice 495244eac9SBenno Rice struct pteg { 505244eac9SBenno Rice struct pte pt[8]; 515244eac9SBenno Rice }; 52f9bac91bSBenno Rice #endif /* LOCORE */ 53f9bac91bSBenno Rice /* High word: */ 54f9bac91bSBenno Rice #define PTE_VALID 0x80000000 55f9bac91bSBenno Rice #define PTE_VSID_SHFT 7 56f9bac91bSBenno Rice #define PTE_HID 0x00000040 57f9bac91bSBenno Rice #define PTE_API 0x0000003f 58f9bac91bSBenno Rice /* Low word: */ 59f9bac91bSBenno Rice #define PTE_RPGN 0xfffff000 60f9bac91bSBenno Rice #define PTE_REF 0x00000100 61f9bac91bSBenno Rice #define PTE_CHG 0x00000080 62f9bac91bSBenno Rice #define PTE_WIMG 0x00000078 63f9bac91bSBenno Rice #define PTE_W 0x00000040 64f9bac91bSBenno Rice #define PTE_I 0x00000020 65f9bac91bSBenno Rice #define PTE_M 0x00000010 66f9bac91bSBenno Rice #define PTE_G 0x00000008 67f9bac91bSBenno Rice #define PTE_PP 0x00000003 685244eac9SBenno Rice #define PTE_SO 0x00000000 /* Super. Only (U: XX, S: RW) */ 695244eac9SBenno Rice #define PTE_SW 0x00000001 /* Super. Write-Only (U: RO, S: RW) */ 705244eac9SBenno Rice #define PTE_BW 0x00000002 /* Supervisor (U: RW, S: RW) */ 715244eac9SBenno Rice #define PTE_BR 0x00000003 /* Both Read Only (U: RO, S: RO) */ 725244eac9SBenno Rice #define PTE_RW PTE_BW 735244eac9SBenno Rice #define PTE_RO PTE_BR 74f9bac91bSBenno Rice 75f9bac91bSBenno Rice #ifndef LOCORE 76f9bac91bSBenno Rice typedef struct pte pte_t; 77f9bac91bSBenno Rice #endif /* LOCORE */ 78f9bac91bSBenno Rice 79f9bac91bSBenno Rice /* 80f9bac91bSBenno Rice * Extract bits from address 81f9bac91bSBenno Rice */ 82f9bac91bSBenno Rice #define ADDR_SR_SHFT 28 83f9bac91bSBenno Rice #define ADDR_PIDX 0x0ffff000 84f9bac91bSBenno Rice #define ADDR_PIDX_SHFT 12 85f9bac91bSBenno Rice #define ADDR_API_SHFT 22 86f9bac91bSBenno Rice #define ADDR_POFF 0x00000fff 87f9bac91bSBenno Rice 88f9bac91bSBenno Rice #ifndef LOCORE 89f9bac91bSBenno Rice #ifdef _KERNEL 90f9bac91bSBenno Rice extern pte_t *ptable; 91f9bac91bSBenno Rice extern int ptab_cnt; 92f9bac91bSBenno Rice #endif /* _KERNEL */ 93f9bac91bSBenno Rice #endif /* LOCORE */ 94f9bac91bSBenno Rice 95f9bac91bSBenno Rice /* 96f9bac91bSBenno Rice * Bits in DSISR: 97f9bac91bSBenno Rice */ 98f9bac91bSBenno Rice #define DSISR_DIRECT 0x80000000 99f9bac91bSBenno Rice #define DSISR_NOTFOUND 0x40000000 100f9bac91bSBenno Rice #define DSISR_PROTECT 0x08000000 101f9bac91bSBenno Rice #define DSISR_INVRX 0x04000000 102f9bac91bSBenno Rice #define DSISR_STORE 0x02000000 103f9bac91bSBenno Rice #define DSISR_DABR 0x00400000 104f9bac91bSBenno Rice #define DSISR_SEGMENT 0x00200000 105f9bac91bSBenno Rice #define DSISR_EAR 0x00100000 106f9bac91bSBenno Rice 107f9bac91bSBenno Rice /* 108f9bac91bSBenno Rice * Bits in SRR1 on ISI: 109f9bac91bSBenno Rice */ 110f9bac91bSBenno Rice #define ISSRR1_NOTFOUND 0x40000000 111f9bac91bSBenno Rice #define ISSRR1_DIRECT 0x10000000 112f9bac91bSBenno Rice #define ISSRR1_PROTECT 0x08000000 113f9bac91bSBenno Rice #define ISSRR1_SEGMENT 0x00200000 114f9bac91bSBenno Rice 115f9bac91bSBenno Rice #ifdef _KERNEL 116f9bac91bSBenno Rice #ifndef LOCORE 117f9bac91bSBenno Rice extern u_int dsisr __P((void)); 118f9bac91bSBenno Rice #endif /* _KERNEL */ 119f9bac91bSBenno Rice #endif /* LOCORE */ 120f9bac91bSBenno Rice #endif /* _MACHINE_PTE_H_ */ 121