(root)/
strace-6.5/
src/
linux/
aarch64/
arch_regs.c
       1  /*
       2   * Copyright (c) 2015-2021 The strace developers.
       3   * All rights reserved.
       4   *
       5   * SPDX-License-Identifier: LGPL-2.1-or-later
       6   */
       7  
       8  struct arm_pt_regs {
       9  	uint32_t uregs[18];
      10  };
      11  #define ARM_cpsr	uregs[16]
      12  #define ARM_pc		uregs[15]
      13  #define ARM_lr		uregs[14]
      14  #define ARM_sp		uregs[13]
      15  #define ARM_ip		uregs[12]
      16  #define ARM_fp		uregs[11]
      17  #define ARM_r10		uregs[10]
      18  #define ARM_r9		uregs[9]
      19  #define ARM_r8		uregs[8]
      20  #define ARM_r7		uregs[7]
      21  #define ARM_r6		uregs[6]
      22  #define ARM_r5		uregs[5]
      23  #define ARM_r4		uregs[4]
      24  #define ARM_r3		uregs[3]
      25  #define ARM_r2		uregs[2]
      26  #define ARM_r1		uregs[1]
      27  #define ARM_r0		uregs[0]
      28  #define ARM_ORIG_r0	uregs[17]
      29  
      30  static union {
      31  	struct user_pt_regs aarch64_r;
      32  	struct arm_pt_regs  arm_r;
      33  } arm_regs_union;
      34  #define aarch64_regs	arm_regs_union.aarch64_r
      35  #define arm_regs	arm_regs_union.arm_r
      36  
      37  static struct iovec aarch64_io = {
      38  	.iov_base = &arm_regs_union
      39  };
      40  
      41  #define ARCH_REGS_FOR_GETREGSET arm_regs_union
      42  #define ARCH_IOVEC_FOR_GETREGSET aarch64_io
      43  #define ARCH_PC_REG \
      44  	((aarch64_io.iov_len == sizeof(arm_regs)) ? arm_regs.ARM_pc : aarch64_regs.pc)
      45  #define ARCH_SP_REG \
      46  	((aarch64_io.iov_len == sizeof(arm_regs)) ? arm_regs.ARM_sp : aarch64_regs.sp)
      47  
      48  #define ARCH_PERSONALITY_0_IOV_SIZE sizeof(aarch64_regs)
      49  #define ARCH_PERSONALITY_1_IOV_SIZE sizeof(arm_regs)