xref: /aosp_15_r20/external/musl/arch/s390x/bits/user.h (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker typedef union {
2*c9945492SAndroid Build Coastguard Worker 	double d;
3*c9945492SAndroid Build Coastguard Worker 	float f;
4*c9945492SAndroid Build Coastguard Worker } elf_fpreg_t;
5*c9945492SAndroid Build Coastguard Worker 
6*c9945492SAndroid Build Coastguard Worker typedef struct {
7*c9945492SAndroid Build Coastguard Worker 	unsigned fpc;
8*c9945492SAndroid Build Coastguard Worker 	elf_fpreg_t fprs[16];
9*c9945492SAndroid Build Coastguard Worker } elf_fpregset_t;
10*c9945492SAndroid Build Coastguard Worker 
11*c9945492SAndroid Build Coastguard Worker #define ELF_NGREG 27
12*c9945492SAndroid Build Coastguard Worker typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
13*c9945492SAndroid Build Coastguard Worker 
14*c9945492SAndroid Build Coastguard Worker struct _user_psw_struct {
15*c9945492SAndroid Build Coastguard Worker 	unsigned long mask, addr;
16*c9945492SAndroid Build Coastguard Worker };
17*c9945492SAndroid Build Coastguard Worker 
18*c9945492SAndroid Build Coastguard Worker struct _user_fpregs_struct {
19*c9945492SAndroid Build Coastguard Worker 	unsigned fpc;
20*c9945492SAndroid Build Coastguard Worker 	double fprs[16];
21*c9945492SAndroid Build Coastguard Worker };
22*c9945492SAndroid Build Coastguard Worker 
23*c9945492SAndroid Build Coastguard Worker struct _user_per_struct {
24*c9945492SAndroid Build Coastguard Worker 	unsigned long control_regs[3];
25*c9945492SAndroid Build Coastguard Worker 	unsigned single_step       : 1;
26*c9945492SAndroid Build Coastguard Worker 	unsigned instruction_fetch : 1;
27*c9945492SAndroid Build Coastguard Worker 	unsigned                   : 30;
28*c9945492SAndroid Build Coastguard Worker 	unsigned long starting_addr, ending_addr;
29*c9945492SAndroid Build Coastguard Worker 	unsigned short perc_atmid;
30*c9945492SAndroid Build Coastguard Worker 	unsigned long address;
31*c9945492SAndroid Build Coastguard Worker 	unsigned char access_id;
32*c9945492SAndroid Build Coastguard Worker };
33*c9945492SAndroid Build Coastguard Worker 
34*c9945492SAndroid Build Coastguard Worker struct _user_regs_struct {
35*c9945492SAndroid Build Coastguard Worker 	struct _user_psw_struct psw;
36*c9945492SAndroid Build Coastguard Worker 	unsigned long gprs[16];
37*c9945492SAndroid Build Coastguard Worker 	unsigned acrs[16];
38*c9945492SAndroid Build Coastguard Worker 	unsigned long orig_gpr2;
39*c9945492SAndroid Build Coastguard Worker 	struct _user_fpregs_struct fp_regs;
40*c9945492SAndroid Build Coastguard Worker 	struct _user_per_struct per_info;
41*c9945492SAndroid Build Coastguard Worker 	unsigned long ieee_instruction_pointer;
42*c9945492SAndroid Build Coastguard Worker };
43*c9945492SAndroid Build Coastguard Worker 
44*c9945492SAndroid Build Coastguard Worker struct user {
45*c9945492SAndroid Build Coastguard Worker 	struct _user_regs_struct regs;
46*c9945492SAndroid Build Coastguard Worker 	unsigned long u_tsize, u_dsize, u_ssize;
47*c9945492SAndroid Build Coastguard Worker 	unsigned long start_code, start_stack;
48*c9945492SAndroid Build Coastguard Worker 	long signal;
49*c9945492SAndroid Build Coastguard Worker 	struct _user_regs_struct *u_ar0;
50*c9945492SAndroid Build Coastguard Worker 	unsigned long magic;
51*c9945492SAndroid Build Coastguard Worker 	char u_comm[32];
52*c9945492SAndroid Build Coastguard Worker };
53*c9945492SAndroid Build Coastguard Worker 
54*c9945492SAndroid Build Coastguard Worker #define PAGE_MASK            (~(PAGESIZE-1))
55*c9945492SAndroid Build Coastguard Worker #define NBPG                 PAGESIZE
56*c9945492SAndroid Build Coastguard Worker #define UPAGES               1
57*c9945492SAndroid Build Coastguard Worker #define HOST_TEXT_START_ADDR (u.start_code)
58*c9945492SAndroid Build Coastguard Worker #define HOST_STACK_END_ADDR  (u.start_stack + u.u_ssize * NBPG)
59*c9945492SAndroid Build Coastguard Worker 
60