1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
/* $NetBSD: pmb.h,v 1.4 2020/07/30 21:25:43 uwe Exp $ */
/*
* Copyright (c) 2020 Valery Ushakov
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _SH3_PMB_H_
#define _SH3_PMB_H_
/*
* ST40 Privileged Mapping Buffer (PMB)
*
* Original SuperH can handle only 29-bit external memory space.
* "The physical address space is permanently mapped onto 29-bit
* external memory space." See <sh3/cpu.h>.
*
* ST40-200, ST40-300 and ST40-500 have "space enhanced" SE mode where
* the mapping from the physical address space P1 and P2 segments to
* the 32-bit external memory space is defined via 16-entry PMB.
*/
/* on ST40-200 and ST40-500 SE bit is in MMUCR */
#define ST40_MMUCR_SE 0x00000010
/* Physical address space control register (ST4-300) */
#define ST40_PASCR 0xff000070
#define ST40_PASCR_UB_MASK 0x0000000f
#define ST40_PASCR_SE 0x80000000
#define ST40_PASCR_BITS \
"\177\020" \
"b\037" "SE\0" \
"f\0\04" "UB\0"
/* Memory-mapped PMB */
#define ST40_PMB_ENTRY 16
#define ST40_PMB_E_MASK 0x00000f00
#define ST40_PMB_E_SHIFT 8
/* PMB Address Array */
#define ST40_PMB_AA 0xf6100000
#define ST40_PMB_AA_V 0x00000100
#define ST40_PMB_AA_VPN_MASK 0xff000000
#define ST40_PMB_AA_VPN_SHIFT 24
#define ST40_PMB_AA_BITS \
"\177\020" \
"f\030\010" "VPN\0" \
"b\010" "V\0"
/* PMB Data Array */
#define ST40_PMB_DA 0xf7100000
#define ST40_PMB_DA_WT 0x00000001
#define ST40_PMB_DA_C 0x00000008
#define ST40_PMB_DA_UB 0x00000200
#define ST40_PMB_DA_SZ_MASK 0x00000090
#define ST40_PMB_DA_SZ_16M 0x00000000
#define ST40_PMB_DA_SZ_64M 0x00000010
#define ST40_PMB_DA_SZ_128M 0x00000080
#define ST40_PMB_DA_SZ_512M 0x00000090
#define ST40_PMB_DA_V 0x00000100
#define ST40_PMB_DA_PPN_MASK 0xff000000
#define ST40_PMB_DA_PPN_SHIFT 24
/*
* size field is not continuous hence the kludgy list with all the
* possible junk bits in the middle.
*/
#define ST40_PMB_DA_BITS \
"\177\020" \
"f\030\010" "PPN\0" \
"b\010" "V\0" \
"F\04\04" "\0" \
":\017" "512M\0" \
":\016" "128M\0" \
":\015" "512M\0" \
":\014" "128M\0" \
":\013" "512M\0" \
":\012" "128M\0" \
":\011" "512M\0" \
":\010" "128M\0" \
":\007" "64M\0" \
":\006" "16M\0" \
":\005" "64M\0" \
":\004" "16M\0" \
":\003" "64M\0" \
":\002" "16M\0" \
":\001" "64M\0" \
":\000" "16M\0" \
"b\011" "UB\0" \
"b\03" "C\0" \
"F\0\01" "\0" \
":\01" "WT\0" \
":\0" "CB\0"
#ifndef _LOCORE
void st40_pmb_init(int);
#endif /* !_LOCORE */
#endif /* !_SH3_PMB_H_ */
|