]> Git Repo - J-linux.git/blob - arch/s390/include/asm/dat-bits.h
Merge tag 'vfs-6.13-rc7.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
[J-linux.git] / arch / s390 / include / asm / dat-bits.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * DAT table and related structures
4  *
5  * Copyright IBM Corp. 2024
6  *
7  */
8
9 #ifndef _S390_DAT_BITS_H
10 #define _S390_DAT_BITS_H
11
12 union asce {
13         unsigned long val;
14         struct {
15                 unsigned long rsto: 52;/* Region- or Segment-Table Origin */
16                 unsigned long     : 2;
17                 unsigned long g   : 1; /* Subspace Group control */
18                 unsigned long p   : 1; /* Private Space control */
19                 unsigned long s   : 1; /* Storage-Alteration-Event control */
20                 unsigned long x   : 1; /* Space-Switch-Event control */
21                 unsigned long r   : 1; /* Real-Space control */
22                 unsigned long     : 1;
23                 unsigned long dt  : 2; /* Designation-Type control */
24                 unsigned long tl  : 2; /* Region- or Segment-Table Length */
25         };
26 };
27
28 enum {
29         ASCE_TYPE_SEGMENT = 0,
30         ASCE_TYPE_REGION3 = 1,
31         ASCE_TYPE_REGION2 = 2,
32         ASCE_TYPE_REGION1 = 3
33 };
34
35 union region1_table_entry {
36         unsigned long val;
37         struct {
38                 unsigned long rto: 52;/* Region-Table Origin */
39                 unsigned long    : 2;
40                 unsigned long p  : 1; /* DAT-Protection Bit */
41                 unsigned long    : 1;
42                 unsigned long tf : 2; /* Region-Second-Table Offset */
43                 unsigned long i  : 1; /* Region-Invalid Bit */
44                 unsigned long    : 1;
45                 unsigned long tt : 2; /* Table-Type Bits */
46                 unsigned long tl : 2; /* Region-Second-Table Length */
47         };
48 };
49
50 union region2_table_entry {
51         unsigned long val;
52         struct {
53                 unsigned long rto: 52;/* Region-Table Origin */
54                 unsigned long    : 2;
55                 unsigned long p  : 1; /* DAT-Protection Bit */
56                 unsigned long    : 1;
57                 unsigned long tf : 2; /* Region-Third-Table Offset */
58                 unsigned long i  : 1; /* Region-Invalid Bit */
59                 unsigned long    : 1;
60                 unsigned long tt : 2; /* Table-Type Bits */
61                 unsigned long tl : 2; /* Region-Third-Table Length */
62         };
63 };
64
65 struct region3_table_entry_fc0 {
66         unsigned long sto: 52;/* Segment-Table Origin */
67         unsigned long    : 1;
68         unsigned long fc : 1; /* Format-Control */
69         unsigned long p  : 1; /* DAT-Protection Bit */
70         unsigned long    : 1;
71         unsigned long tf : 2; /* Segment-Table Offset */
72         unsigned long i  : 1; /* Region-Invalid Bit */
73         unsigned long cr : 1; /* Common-Region Bit */
74         unsigned long tt : 2; /* Table-Type Bits */
75         unsigned long tl : 2; /* Segment-Table Length */
76 };
77
78 struct region3_table_entry_fc1 {
79         unsigned long rfaa: 33;/* Region-Frame Absolute Address */
80         unsigned long     : 14;
81         unsigned long av  : 1; /* ACCF-Validity Control */
82         unsigned long acc : 4; /* Access-Control Bits */
83         unsigned long f   : 1; /* Fetch-Protection Bit */
84         unsigned long fc  : 1; /* Format-Control */
85         unsigned long p   : 1; /* DAT-Protection Bit */
86         unsigned long iep : 1; /* Instruction-Execution-Protection */
87         unsigned long     : 2;
88         unsigned long i   : 1; /* Region-Invalid Bit */
89         unsigned long cr  : 1; /* Common-Region Bit */
90         unsigned long tt  : 2; /* Table-Type Bits */
91         unsigned long     : 2;
92 };
93
94 union region3_table_entry {
95         unsigned long val;
96         struct region3_table_entry_fc0 fc0;
97         struct region3_table_entry_fc1 fc1;
98         struct {
99                 unsigned long   : 53;
100                 unsigned long fc: 1; /* Format-Control */
101                 unsigned long   : 4;
102                 unsigned long i : 1; /* Region-Invalid Bit */
103                 unsigned long cr: 1; /* Common-Region Bit */
104                 unsigned long tt: 2; /* Table-Type Bits */
105                 unsigned long   : 2;
106         };
107 };
108
109 struct segment_table_entry_fc0 {
110         unsigned long pto: 53;/* Page-Table Origin */
111         unsigned long fc : 1; /* Format-Control */
112         unsigned long p  : 1; /* DAT-Protection Bit */
113         unsigned long    : 3;
114         unsigned long i  : 1; /* Segment-Invalid Bit */
115         unsigned long cs : 1; /* Common-Segment Bit */
116         unsigned long tt : 2; /* Table-Type Bits */
117         unsigned long    : 2;
118 };
119
120 struct segment_table_entry_fc1 {
121         unsigned long sfaa: 44;/* Segment-Frame Absolute Address */
122         unsigned long     : 3;
123         unsigned long av  : 1; /* ACCF-Validity Control */
124         unsigned long acc : 4; /* Access-Control Bits */
125         unsigned long f   : 1; /* Fetch-Protection Bit */
126         unsigned long fc  : 1; /* Format-Control */
127         unsigned long p   : 1; /* DAT-Protection Bit */
128         unsigned long iep : 1; /* Instruction-Execution-Protection */
129         unsigned long     : 2;
130         unsigned long i   : 1; /* Segment-Invalid Bit */
131         unsigned long cs  : 1; /* Common-Segment Bit */
132         unsigned long tt  : 2; /* Table-Type Bits */
133         unsigned long     : 2;
134 };
135
136 union segment_table_entry {
137         unsigned long val;
138         struct segment_table_entry_fc0 fc0;
139         struct segment_table_entry_fc1 fc1;
140         struct {
141                 unsigned long   : 53;
142                 unsigned long fc: 1; /* Format-Control */
143                 unsigned long   : 4;
144                 unsigned long i : 1; /* Segment-Invalid Bit */
145                 unsigned long cs: 1; /* Common-Segment Bit */
146                 unsigned long tt: 2; /* Table-Type Bits */
147                 unsigned long   : 2;
148         };
149 };
150
151 union page_table_entry {
152         unsigned long val;
153         struct {
154                 unsigned long pfra: 52;/* Page-Frame Real Address */
155                 unsigned long z   : 1; /* Zero Bit */
156                 unsigned long i   : 1; /* Page-Invalid Bit */
157                 unsigned long p   : 1; /* DAT-Protection Bit */
158                 unsigned long iep : 1; /* Instruction-Execution-Protection */
159                 unsigned long     : 8;
160         };
161 };
162
163 enum {
164         TABLE_TYPE_SEGMENT = 0,
165         TABLE_TYPE_REGION3 = 1,
166         TABLE_TYPE_REGION2 = 2,
167         TABLE_TYPE_REGION1 = 3
168 };
169
170 #endif /* _S390_DAT_BITS_H */
This page took 0.051508 seconds and 4 git commands to generate.