xref: /aosp_15_r20/external/strace/linux/s390x/arch_regs.c (revision cf84ac9a129d8ea9952db616b4e9b904c4bdde56)
1*cf84ac9aSAndroid Build Coastguard Worker #ifndef HAVE_S390_COMPAT_REGS
2*cf84ac9aSAndroid Build Coastguard Worker typedef struct {
3*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t mask;
4*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t addr;
5*cf84ac9aSAndroid Build Coastguard Worker } ATTRIBUTE_ALIGNED(8) psw_compat_t;
6*cf84ac9aSAndroid Build Coastguard Worker 
7*cf84ac9aSAndroid Build Coastguard Worker typedef struct {
8*cf84ac9aSAndroid Build Coastguard Worker 	psw_compat_t psw;
9*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t gprs[NUM_GPRS];
10*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t acrs[NUM_ACRS];
11*cf84ac9aSAndroid Build Coastguard Worker 	uint32_t orig_gpr2;
12*cf84ac9aSAndroid Build Coastguard Worker } s390_compat_regs;
13*cf84ac9aSAndroid Build Coastguard Worker #endif
14*cf84ac9aSAndroid Build Coastguard Worker 
15*cf84ac9aSAndroid Build Coastguard Worker static union {
16*cf84ac9aSAndroid Build Coastguard Worker 	s390_compat_regs s390_regs;
17*cf84ac9aSAndroid Build Coastguard Worker 	s390_regs s390x_regs;
18*cf84ac9aSAndroid Build Coastguard Worker } s390x_regs_union;
19*cf84ac9aSAndroid Build Coastguard Worker 
20*cf84ac9aSAndroid Build Coastguard Worker #define s390_regset	s390x_regs_union.s390_regs
21*cf84ac9aSAndroid Build Coastguard Worker #define s390x_regset	s390x_regs_union.s390x_regs
22*cf84ac9aSAndroid Build Coastguard Worker 
23*cf84ac9aSAndroid Build Coastguard Worker uint32_t *const s390_frame_ptr = &s390_regset.gprs[15];
24*cf84ac9aSAndroid Build Coastguard Worker unsigned long *const s390x_frame_ptr = &s390x_regset.gprs[15];
25*cf84ac9aSAndroid Build Coastguard Worker 
26*cf84ac9aSAndroid Build Coastguard Worker static struct iovec s390x_io = {
27*cf84ac9aSAndroid Build Coastguard Worker 	.iov_base = &s390x_regs_union,
28*cf84ac9aSAndroid Build Coastguard Worker };
29*cf84ac9aSAndroid Build Coastguard Worker 
30*cf84ac9aSAndroid Build Coastguard Worker 
31*cf84ac9aSAndroid Build Coastguard Worker #define ARCH_REGS_FOR_GETREGSET  s390x_regs_union
32*cf84ac9aSAndroid Build Coastguard Worker #define ARCH_IOVEC_FOR_GETREGSET s390x_io
33*cf84ac9aSAndroid Build Coastguard Worker #define ARCH_PC_REG \
34*cf84ac9aSAndroid Build Coastguard Worker 	(s390x_io.iov_len == sizeof(s390_regset) ? \
35*cf84ac9aSAndroid Build Coastguard Worker 			     s390_regset.psw.addr : s390x_regset.psw.addr)
36*cf84ac9aSAndroid Build Coastguard Worker 
37*cf84ac9aSAndroid Build Coastguard Worker #define ARCH_PERSONALITY_0_IOV_SIZE sizeof(s390x_regset)
38*cf84ac9aSAndroid Build Coastguard Worker #define ARCH_PERSONALITY_1_IOV_SIZE sizeof(s390_regset)
39