xref: /freebsd/sys/powerpc/include/bat.h (revision 2ff63af9b88c7413b7d71715b5532625752a248e)
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