/* SPDX-License-Identifier: GPL-2.0 */
/*
* DAT table and related structures
*
* Copyright IBM Corp. 2024
*
*/
#ifndef _S390_DAT_BITS_H
#define _S390_DAT_BITS_H
union asce {
unsigned long val;
struct {
unsigned long rsto: 52 ;/* Region- or Segment-Table Origin */
unsigned long : 2 ;
unsigned long g : 1 ; /* Subspace Group control */
unsigned long p : 1 ; /* Private Space control */
unsigned long s : 1 ; /* Storage-Alteration-Event control */
unsigned long x : 1 ; /* Space-Switch-Event control */
unsigned long r : 1 ; /* Real-Space control */
unsigned long : 1 ;
unsigned long dt : 2 ; /* Designation-Type control */
unsigned long tl : 2 ; /* Region- or Segment-Table Length */
};
};
enum {
ASCE_TYPE_SEGMENT = 0 ,
ASCE_TYPE_REGION3 = 1 ,
ASCE_TYPE_REGION2 = 2 ,
ASCE_TYPE_REGION1 = 3
};
union region1_table_entry {
unsigned long val;
struct {
unsigned long rto: 52 ;/* Region-Table Origin */
unsigned long : 2 ;
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long : 1 ;
unsigned long tf : 2 ; /* Region-Second-Table Offset */
unsigned long i : 1 ; /* Region-Invalid Bit */
unsigned long : 1 ;
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long tl : 2 ; /* Region-Second-Table Length */
};
};
union region2_table_entry {
unsigned long val;
struct {
unsigned long rto: 52 ;/* Region-Table Origin */
unsigned long : 2 ;
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long : 1 ;
unsigned long tf : 2 ; /* Region-Third-Table Offset */
unsigned long i : 1 ; /* Region-Invalid Bit */
unsigned long : 1 ;
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long tl : 2 ; /* Region-Third-Table Length */
};
};
struct region3_table_entry_fc0 {
unsigned long sto: 52 ;/* Segment-Table Origin */
unsigned long : 1 ;
unsigned long fc : 1 ; /* Format-Control */
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long : 1 ;
unsigned long tf : 2 ; /* Segment-Table Offset */
unsigned long i : 1 ; /* Region-Invalid Bit */
unsigned long cr : 1 ; /* Common-Region Bit */
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long tl : 2 ; /* Segment-Table Length */
};
struct region3_table_entry_fc1 {
unsigned long rfaa: 33 ;/* Region-Frame Absolute Address */
unsigned long : 14 ;
unsigned long av : 1 ; /* ACCF-Validity Control */
unsigned long acc : 4 ; /* Access-Control Bits */
unsigned long f : 1 ; /* Fetch-Protection Bit */
unsigned long fc : 1 ; /* Format-Control */
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long iep : 1 ; /* Instruction-Execution-Protection */
unsigned long : 2 ;
unsigned long i : 1 ; /* Region-Invalid Bit */
unsigned long cr : 1 ; /* Common-Region Bit */
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long : 2 ;
};
union region3_table_entry {
unsigned long val;
struct region3_table_entry_fc0 fc0;
struct region3_table_entry_fc1 fc1;
struct {
unsigned long : 53 ;
unsigned long fc: 1 ; /* Format-Control */
unsigned long : 4 ;
unsigned long i : 1 ; /* Region-Invalid Bit */
unsigned long cr: 1 ; /* Common-Region Bit */
unsigned long tt: 2 ; /* Table-Type Bits */
unsigned long : 2 ;
};
};
struct segment_table_entry_fc0 {
unsigned long pto: 53 ;/* Page-Table Origin */
unsigned long fc : 1 ; /* Format-Control */
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long : 3 ;
unsigned long i : 1 ; /* Segment-Invalid Bit */
unsigned long cs : 1 ; /* Common-Segment Bit */
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long : 2 ;
};
struct segment_table_entry_fc1 {
unsigned long sfaa: 44 ;/* Segment-Frame Absolute Address */
unsigned long : 3 ;
unsigned long av : 1 ; /* ACCF-Validity Control */
unsigned long acc : 4 ; /* Access-Control Bits */
unsigned long f : 1 ; /* Fetch-Protection Bit */
unsigned long fc : 1 ; /* Format-Control */
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long iep : 1 ; /* Instruction-Execution-Protection */
unsigned long : 2 ;
unsigned long i : 1 ; /* Segment-Invalid Bit */
unsigned long cs : 1 ; /* Common-Segment Bit */
unsigned long tt : 2 ; /* Table-Type Bits */
unsigned long : 2 ;
};
union segment_table_entry {
unsigned long val;
struct segment_table_entry_fc0 fc0;
struct segment_table_entry_fc1 fc1;
struct {
unsigned long : 53 ;
unsigned long fc: 1 ; /* Format-Control */
unsigned long : 4 ;
unsigned long i : 1 ; /* Segment-Invalid Bit */
unsigned long cs: 1 ; /* Common-Segment Bit */
unsigned long tt: 2 ; /* Table-Type Bits */
unsigned long : 2 ;
};
};
union page_table_entry {
unsigned long val;
struct {
unsigned long pfra: 52 ;/* Page-Frame Real Address */
unsigned long z : 1 ; /* Zero Bit */
unsigned long i : 1 ; /* Page-Invalid Bit */
unsigned long p : 1 ; /* DAT-Protection Bit */
unsigned long iep : 1 ; /* Instruction-Execution-Protection */
unsigned long : 8 ;
};
};
enum {
TABLE_TYPE_SEGMENT = 0 ,
TABLE_TYPE_REGION3 = 1 ,
TABLE_TYPE_REGION2 = 2 ,
TABLE_TYPE_REGION1 = 3
};
#endif /* _S390_DAT_BITS_H */
Messung V0.5 in Prozent C=94 H=92 G=92
¤ Dauer der Verarbeitung: 0.0 Sekunden
(vorverarbeitet am 2026-06-08)
¤
*© Formatika GbR, Deutschland