#ifndef _S390_DAT_BITS_H
#define _S390_DAT_BITS_H
union asce {
unsigned long val;
struct {
unsigned long rsto: 52;
unsigned long : 2;
unsigned long g : 1;
unsigned long p : 1;
unsigned long s : 1;
unsigned long x : 1;
unsigned long r : 1;
unsigned long : 1;
unsigned long dt : 2;
unsigned long tl : 2;
};
};
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;
unsigned long : 2;
unsigned long p : 1;
unsigned long : 1;
unsigned long tf : 2;
unsigned long i : 1;
unsigned long : 1;
unsigned long tt : 2;
unsigned long tl : 2;
};
};
union region2_table_entry {
unsigned long val;
struct {
unsigned long rto: 52;
unsigned long : 2;
unsigned long p : 1;
unsigned long : 1;
unsigned long tf : 2;
unsigned long i : 1;
unsigned long : 1;
unsigned long tt : 2;
unsigned long tl : 2;
};
};
struct region3_table_entry_fc0 {
unsigned long sto: 52;
unsigned long : 1;
unsigned long fc : 1;
unsigned long p : 1;
unsigned long : 1;
unsigned long tf : 2;
unsigned long i : 1;
unsigned long cr : 1;
unsigned long tt : 2;
unsigned long tl : 2;
};
struct region3_table_entry_fc1 {
unsigned long rfaa: 33;
unsigned long : 14;
unsigned long av : 1;
unsigned long acc : 4;
unsigned long f : 1;
unsigned long fc : 1;
unsigned long p : 1;
unsigned long iep : 1;
unsigned long : 2;
unsigned long i : 1;
unsigned long cr : 1;
unsigned long tt : 2;
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;
unsigned long : 4;
unsigned long i : 1;
unsigned long cr: 1;
unsigned long tt: 2;
unsigned long : 2;
};
};
struct segment_table_entry_fc0 {
unsigned long pto: 53;
unsigned long fc : 1;
unsigned long p : 1;
unsigned long : 3;
unsigned long i : 1;
unsigned long cs : 1;
unsigned long tt : 2;
unsigned long : 2;
};
struct segment_table_entry_fc1 {
unsigned long sfaa: 44;
unsigned long : 3;
unsigned long av : 1;
unsigned long acc : 4;
unsigned long f : 1;
unsigned long fc : 1;
unsigned long p : 1;
unsigned long iep : 1;
unsigned long : 2;
unsigned long i : 1;
unsigned long cs : 1;
unsigned long tt : 2;
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;
unsigned long : 4;
unsigned long i : 1;
unsigned long cs: 1;
unsigned long tt: 2;
unsigned long : 2;
};
};
union page_table_entry {
unsigned long val;
struct {
unsigned long pfra: 52;
unsigned long z : 1;
unsigned long i : 1;
unsigned long p : 1;
unsigned long iep : 1;
unsigned long : 8;
};
};
enum {
TABLE_TYPE_SEGMENT = 0,
TABLE_TYPE_REGION3 = 1,
TABLE_TYPE_REGION2 = 2,
TABLE_TYPE_REGION1 = 3
};
#endif