1f9bac91bSBenno Rice /*- 2*b61a5730SWarner Losh * SPDX-License-Identifier: BSD-2-Clause AND BSD-4-Clause 371e3c308SPedro F. Giffuni * 4f9bac91bSBenno Rice * Copyright (c) 1999 The NetBSD Foundation, Inc. 5f9bac91bSBenno Rice * All rights reserved. 6f9bac91bSBenno Rice * 7f9bac91bSBenno Rice * This code is derived from software contributed to The NetBSD Foundation 8f9bac91bSBenno Rice * by Jason R. Thorpe. 9f9bac91bSBenno Rice * 10f9bac91bSBenno Rice * Redistribution and use in source and binary forms, with or without 11f9bac91bSBenno Rice * modification, are permitted provided that the following conditions 12f9bac91bSBenno Rice * are met: 13f9bac91bSBenno Rice * 1. Redistributions of source code must retain the above copyright 14f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer. 15f9bac91bSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 16f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer in the 17f9bac91bSBenno Rice * documentation and/or other materials provided with the distribution. 18f9bac91bSBenno Rice * 19f9bac91bSBenno Rice * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20f9bac91bSBenno Rice * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21f9bac91bSBenno Rice * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22f9bac91bSBenno Rice * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23f9bac91bSBenno Rice * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24f9bac91bSBenno Rice * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25f9bac91bSBenno Rice * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26f9bac91bSBenno Rice * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27f9bac91bSBenno Rice * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28f9bac91bSBenno Rice * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29f9bac91bSBenno Rice * POSSIBILITY OF SUCH DAMAGE. 30f9bac91bSBenno Rice */ 31f9bac91bSBenno Rice 3260727d8bSWarner Losh /*- 33f9bac91bSBenno Rice * Copyright (C) 1995, 1996 Wolfgang Solfrank. 34f9bac91bSBenno Rice * Copyright (C) 1995, 1996 TooLs GmbH. 35f9bac91bSBenno Rice * All rights reserved. 36f9bac91bSBenno Rice * 37f9bac91bSBenno Rice * Redistribution and use in source and binary forms, with or without 38f9bac91bSBenno Rice * modification, are permitted provided that the following conditions 39f9bac91bSBenno Rice * are met: 40f9bac91bSBenno Rice * 1. Redistributions of source code must retain the above copyright 41f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer. 42f9bac91bSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 43f9bac91bSBenno Rice * notice, this list of conditions and the following disclaimer in the 44f9bac91bSBenno Rice * documentation and/or other materials provided with the distribution. 45f9bac91bSBenno Rice * 3. All advertising materials mentioning features or use of this software 46f9bac91bSBenno Rice * must display the following acknowledgement: 47f9bac91bSBenno Rice * This product includes software developed by TooLs GmbH. 48f9bac91bSBenno Rice * 4. The name of TooLs GmbH may not be used to endorse or promote products 49f9bac91bSBenno Rice * derived from this software without specific prior written permission. 50f9bac91bSBenno Rice * 51f9bac91bSBenno Rice * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 52f9bac91bSBenno Rice * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 53f9bac91bSBenno Rice * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 54f9bac91bSBenno Rice * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 55f9bac91bSBenno Rice * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 56f9bac91bSBenno Rice * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 57f9bac91bSBenno Rice * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 58f9bac91bSBenno Rice * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 59f9bac91bSBenno Rice * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 60f9bac91bSBenno Rice * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 61f9bac91bSBenno Rice * 62f9bac91bSBenno Rice * $NetBSD: bat.h,v 1.2 1999/12/18 01:36:06 thorpej Exp $ 63f9bac91bSBenno Rice */ 64f9bac91bSBenno Rice 65f9bac91bSBenno Rice #ifndef _MACHINE_BAT_H_ 66f9bac91bSBenno Rice #define _MACHINE_BAT_H_ 67f9bac91bSBenno Rice 68c1960362SRui Paulo #ifndef LOCORE 69f9bac91bSBenno Rice struct bat { 70f9bac91bSBenno Rice u_int32_t batu; 71f9bac91bSBenno Rice u_int32_t batl; 72f9bac91bSBenno Rice }; 73c1960362SRui Paulo #endif 74f9bac91bSBenno Rice 75f9bac91bSBenno Rice /* Lower BAT bits (all but PowerPC 601): */ 76f9bac91bSBenno Rice #define BAT_PBS 0xfffe0000 /* physical block start */ 77f9bac91bSBenno Rice #define BAT_W 0x00000040 /* 1 = write-through, 0 = write-back */ 78f9bac91bSBenno Rice #define BAT_I 0x00000020 /* cache inhibit */ 79f9bac91bSBenno Rice #define BAT_M 0x00000010 /* memory coherency enable */ 80f9bac91bSBenno Rice #define BAT_G 0x00000008 /* guarded region */ 81f9bac91bSBenno Rice 82f9bac91bSBenno Rice #define BAT_PP_NONE 0x00000000 /* no access permission */ 83f9bac91bSBenno Rice #define BAT_PP_RO_S 0x00000001 /* read-only (soft) */ 84f9bac91bSBenno Rice #define BAT_PP_RW 0x00000002 /* read/write */ 85f9bac91bSBenno Rice #define BAT_PP_RO 0x00000003 /* read-only */ 86f9bac91bSBenno Rice 87f9bac91bSBenno Rice /* Upper BAT bits (all but PowerPC 601): */ 88f9bac91bSBenno Rice #define BAT_EBS 0xfffe0000 /* effective block start */ 89f9bac91bSBenno Rice #define BAT_BL 0x00001ffc /* block length */ 90f9bac91bSBenno Rice #define BAT_Vs 0x00000002 /* valid in supervisor mode */ 91f9bac91bSBenno Rice #define BAT_Vu 0x00000001 /* valid in user mode */ 92f9bac91bSBenno Rice 93f9bac91bSBenno Rice #define BAT_V (BAT_Vs|BAT_Vu) 94f9bac91bSBenno Rice 95f9bac91bSBenno Rice /* Block Length encoding (all but PowerPC 601): */ 96f9bac91bSBenno Rice #define BAT_BL_128K 0x00000000 97f9bac91bSBenno Rice #define BAT_BL_256K 0x00000004 98f9bac91bSBenno Rice #define BAT_BL_512K 0x0000000c 99f9bac91bSBenno Rice #define BAT_BL_1M 0x0000001c 100f9bac91bSBenno Rice #define BAT_BL_2M 0x0000003c 101f9bac91bSBenno Rice #define BAT_BL_4M 0x0000007c 102f9bac91bSBenno Rice #define BAT_BL_8M 0x000000fc 103f9bac91bSBenno Rice #define BAT_BL_16M 0x000001fc 104f9bac91bSBenno Rice #define BAT_BL_32M 0x000003fc 105f9bac91bSBenno Rice #define BAT_BL_64M 0x000007fc 106f9bac91bSBenno Rice #define BAT_BL_128M 0x00000ffc 107f9bac91bSBenno Rice #define BAT_BL_256M 0x00001ffc 108f9bac91bSBenno Rice 109f9bac91bSBenno Rice #define BATU(va, len, v) \ 110f9bac91bSBenno Rice (((va) & BAT_EBS) | ((len) & BAT_BL) | ((v) & BAT_V)) 111f9bac91bSBenno Rice 112f9bac91bSBenno Rice #define BATL(pa, wimg, pp) \ 113f9bac91bSBenno Rice (((pa) & BAT_PBS) | (wimg) | (pp)) 114f9bac91bSBenno Rice 115f9bac91bSBenno Rice /* Lower BAT bits (PowerPC 601): */ 116f9bac91bSBenno Rice #define BAT601_PBN 0xfffe0000 /* physical block number */ 117f9bac91bSBenno Rice #define BAT601_V 0x00000040 /* valid */ 118f9bac91bSBenno Rice #define BAT601_BSM 0x0000003f /* block size mask */ 119f9bac91bSBenno Rice 120f9bac91bSBenno Rice /* Upper BAT bits (PowerPC 601): */ 121f9bac91bSBenno Rice #define BAT601_BLPI 0xfffe0000 /* block logical page index */ 122f9bac91bSBenno Rice #define BAT601_W 0x00000040 /* 1 = write-through, 0 = write-back */ 123f9bac91bSBenno Rice #define BAT601_I 0x00000020 /* cache inhibit */ 124f9bac91bSBenno Rice #define BAT601_M 0x00000010 /* memory coherency enable */ 125f9bac91bSBenno Rice #define BAT601_Ks 0x00000008 /* key-supervisor */ 126f9bac91bSBenno Rice #define BAT601_Ku 0x00000004 /* key-user */ 127f9bac91bSBenno Rice 128f9bac91bSBenno Rice /* 129f9bac91bSBenno Rice * Permission bits on the PowerPC 601 are modified by the appropriate 130f9bac91bSBenno Rice * Key bit: 131f9bac91bSBenno Rice * 132f9bac91bSBenno Rice * Key PP Access 133f9bac91bSBenno Rice * 0 NONE read/write 134f9bac91bSBenno Rice * 0 RO_S read/write 135f9bac91bSBenno Rice * 0 RW read/write 136f9bac91bSBenno Rice * 0 RO read-only 137f9bac91bSBenno Rice * 138f9bac91bSBenno Rice * 1 NONE none 139f9bac91bSBenno Rice * 1 RO_S read-only 140f9bac91bSBenno Rice * 1 RW read/write 141f9bac91bSBenno Rice * 1 RO read-only 142f9bac91bSBenno Rice */ 143f9bac91bSBenno Rice #define BAT601_PP_NONE 0x00000000 /* no access permission */ 144f9bac91bSBenno Rice #define BAT601_PP_RO_S 0x00000001 /* read-only (soft) */ 145f9bac91bSBenno Rice #define BAT601_PP_RW 0x00000002 /* read/write */ 146f9bac91bSBenno Rice #define BAT601_PP_RO 0x00000003 /* read-only */ 147f9bac91bSBenno Rice 148f9bac91bSBenno Rice /* Block Size Mask encoding (PowerPC 601): */ 149f9bac91bSBenno Rice #define BAT601_BSM_128K 0x00000000 150f9bac91bSBenno Rice #define BAT601_BSM_256K 0x00000001 151f9bac91bSBenno Rice #define BAT601_BSM_512K 0x00000003 152f9bac91bSBenno Rice #define BAT601_BSM_1M 0x00000007 153f9bac91bSBenno Rice #define BAT601_BSM_2M 0x0000000f 154f9bac91bSBenno Rice #define BAT601_BSM_4M 0x0000001f 155f9bac91bSBenno Rice #define BAT601_BSM_8M 0x0000003f 156f9bac91bSBenno Rice 157f9bac91bSBenno Rice #define BATU601(va, wim, key, pp) \ 158f9bac91bSBenno Rice (((va) & BAT601_BLPI) | (wim) | (key) | (pp)) 159f9bac91bSBenno Rice 160f9bac91bSBenno Rice #define BATL601(pa, size, v) \ 161f9bac91bSBenno Rice (((pa) & BAT601_PBN) | (v) | (size)) 162f9bac91bSBenno Rice 163c1960362SRui Paulo #if defined(_KERNEL) && !defined(LOCORE) 164f9bac91bSBenno Rice extern struct bat battable[16]; 165f9bac91bSBenno Rice #endif 166f9bac91bSBenno Rice 167f9bac91bSBenno Rice #endif /* _MACHINE_BAT_H_ */ 168