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