Linux-libre 5.3.12-gnu
[librecmc/linux-libre.git] / arch / powerpc / sysdev / dart.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 /*
3  * Copyright (C) 2004 Olof Johansson <olof@lixom.net>, IBM Corporation
4  */
5
6 #ifndef _POWERPC_SYSDEV_DART_H
7 #define _POWERPC_SYSDEV_DART_H
8
9
10 /* Offset from base to control register */
11 #define DART_CNTL       0
12
13 /* Offset from base to exception register */
14 #define DART_EXCP_U3    0x10
15 /* Offset from base to TLB tag registers */
16 #define DART_TAGS_U3    0x1000
17
18 /* U4 registers */
19 #define DART_BASE_U4    0x10
20 #define DART_SIZE_U4    0x20
21 #define DART_EXCP_U4    0x30
22 #define DART_TAGS_U4    0x1000
23
24 /* Control Register fields */
25
26 /* U3 registers */
27 #define DART_CNTL_U3_BASE_MASK  0xfffff
28 #define DART_CNTL_U3_BASE_SHIFT 12
29 #define DART_CNTL_U3_FLUSHTLB   0x400
30 #define DART_CNTL_U3_ENABLE     0x200
31 #define DART_CNTL_U3_SIZE_MASK  0x1ff
32 #define DART_CNTL_U3_SIZE_SHIFT 0
33
34 /* U4 registers */
35 #define DART_BASE_U4_BASE_MASK  0xffffff
36 #define DART_BASE_U4_BASE_SHIFT 0
37 #define DART_CNTL_U4_ENABLE     0x80000000
38 #define DART_CNTL_U4_IONE       0x40000000
39 #define DART_CNTL_U4_FLUSHTLB   0x20000000
40 #define DART_CNTL_U4_IDLE       0x10000000
41 #define DART_CNTL_U4_PAR_EN     0x08000000
42 #define DART_CNTL_U4_IONE_MASK  0x07ffffff
43 #define DART_SIZE_U4_SIZE_MASK  0x1fff
44 #define DART_SIZE_U4_SIZE_SHIFT 0
45
46 #define DART_REG(r)     (dart + ((r) >> 2))
47 #define DART_IN(r)      (in_be32(DART_REG(r)))
48 #define DART_OUT(r,v)   (out_be32(DART_REG(r), (v)))
49
50
51 /* size of table in pages */
52
53
54 /* DART table fields */
55
56 #define DARTMAP_VALID   0x80000000
57 #define DARTMAP_RPNMASK 0x00ffffff
58
59
60 #define DART_PAGE_SHIFT         12
61 #define DART_PAGE_SIZE          (1 << DART_PAGE_SHIFT)
62
63
64 #endif /* _POWERPC_SYSDEV_DART_H */