File Index
Files and directories
Sign in
FILE

dat-bits.h

File preview with syntax highlighting.

linux-6.19.14/arch/s390/include/asm/dat-bits.h C
  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
 12union 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
 28enum {
 29	ASCE_TYPE_SEGMENT = 0,
 30	ASCE_TYPE_REGION3 = 1,
 31	ASCE_TYPE_REGION2 = 2,
 32	ASCE_TYPE_REGION1 = 3
 33};
 34
 35union 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
 50union 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
 65struct 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
 78struct 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
 94union 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
109struct 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
120struct 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
136union 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
151union 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
163enum {
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 */
~/ Read-only file preview.