115 lines
3.6 KiB
C
115 lines
3.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
|
|
#ifndef _UAPI_METAG_PTRACE_H
|
|
#define _UAPI_METAG_PTRACE_H
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
/*
|
|
* These are the layouts of the regsets returned by the GETREGSET ptrace call
|
|
*/
|
|
|
|
/* user_gp_regs::status */
|
|
|
|
/* CBMarker bit (indicates catch state / catch replay) */
|
|
#define USER_GP_REGS_STATUS_CATCH_BIT (1 << 22)
|
|
#define USER_GP_REGS_STATUS_CATCH_S 22
|
|
/* LSM_STEP field (load/store multiple step) */
|
|
#define USER_GP_REGS_STATUS_LSM_STEP_BITS (0x7 << 8)
|
|
#define USER_GP_REGS_STATUS_LSM_STEP_S 8
|
|
/* SCC bit (indicates split 16x16 condition flags) */
|
|
#define USER_GP_REGS_STATUS_SCC_BIT (1 << 4)
|
|
#define USER_GP_REGS_STATUS_SCC_S 4
|
|
|
|
/* normal condition flags */
|
|
/* CF_Z bit (Zero flag) */
|
|
#define USER_GP_REGS_STATUS_CF_Z_BIT (1 << 3)
|
|
#define USER_GP_REGS_STATUS_CF_Z_S 3
|
|
/* CF_N bit (Negative flag) */
|
|
#define USER_GP_REGS_STATUS_CF_N_BIT (1 << 2)
|
|
#define USER_GP_REGS_STATUS_CF_N_S 2
|
|
/* CF_V bit (oVerflow flag) */
|
|
#define USER_GP_REGS_STATUS_CF_V_BIT (1 << 1)
|
|
#define USER_GP_REGS_STATUS_CF_V_S 1
|
|
/* CF_C bit (Carry flag) */
|
|
#define USER_GP_REGS_STATUS_CF_C_BIT (1 << 0)
|
|
#define USER_GP_REGS_STATUS_CF_C_S 0
|
|
|
|
/* split 16x16 condition flags */
|
|
/* SCF_LZ bit (Low Zero flag) */
|
|
#define USER_GP_REGS_STATUS_SCF_LZ_BIT (1 << 3)
|
|
#define USER_GP_REGS_STATUS_SCF_LZ_S 3
|
|
/* SCF_HZ bit (High Zero flag) */
|
|
#define USER_GP_REGS_STATUS_SCF_HZ_BIT (1 << 2)
|
|
#define USER_GP_REGS_STATUS_SCF_HZ_S 2
|
|
/* SCF_HC bit (High Carry flag) */
|
|
#define USER_GP_REGS_STATUS_SCF_HC_BIT (1 << 1)
|
|
#define USER_GP_REGS_STATUS_SCF_HC_S 1
|
|
/* SCF_LC bit (Low Carry flag) */
|
|
#define USER_GP_REGS_STATUS_SCF_LC_BIT (1 << 0)
|
|
#define USER_GP_REGS_STATUS_SCF_LC_S 0
|
|
|
|
/**
|
|
* struct user_gp_regs - User general purpose registers
|
|
* @dx: GP data unit regs (dx[reg][unit] = D{unit:0-1}.{reg:0-7})
|
|
* @ax: GP address unit regs (ax[reg][unit] = A{unit:0-1}.{reg:0-3})
|
|
* @pc: PC register
|
|
* @status: TXSTATUS register (condition flags, LSM_STEP etc)
|
|
* @rpt: TXRPT registers (branch repeat counter)
|
|
* @bpobits: TXBPOBITS register ("branch prediction other" bits)
|
|
* @mode: TXMODE register
|
|
* @_pad1: Reserved padding to make sizeof obviously 64bit aligned
|
|
*
|
|
* This is the user-visible general purpose register state structure.
|
|
*
|
|
* It can be accessed through PTRACE_GETREGSET with NT_PRSTATUS.
|
|
*
|
|
* It is also used in the signal context.
|
|
*/
|
|
struct user_gp_regs {
|
|
unsigned long dx[8][2];
|
|
unsigned long ax[4][2];
|
|
unsigned long pc;
|
|
unsigned long status;
|
|
unsigned long rpt;
|
|
unsigned long bpobits;
|
|
unsigned long mode;
|
|
unsigned long _pad1;
|
|
};
|
|
|
|
/**
|
|
* struct user_cb_regs - User catch buffer registers
|
|
* @flags: TXCATCH0 register (fault flags)
|
|
* @addr: TXCATCH1 register (fault address)
|
|
* @data: TXCATCH2 and TXCATCH3 registers (low and high data word)
|
|
*
|
|
* This is the user-visible catch buffer register state structure containing
|
|
* information about a failed memory access, and allowing the access to be
|
|
* modified and replayed.
|
|
*
|
|
* It can be accessed through PTRACE_GETREGSET with NT_METAG_CBUF.
|
|
*/
|
|
struct user_cb_regs {
|
|
unsigned long flags;
|
|
unsigned long addr;
|
|
unsigned long long data;
|
|
};
|
|
|
|
/**
|
|
* struct user_rp_state - User read pipeline state
|
|
* @entries: Read pipeline entries
|
|
* @mask: Mask of valid pipeline entries (RPMask from TXDIVTIME register)
|
|
*
|
|
* This is the user-visible read pipeline state structure containing the entries
|
|
* currently in the read pipeline and the mask of valid entries.
|
|
*
|
|
* It can be accessed through PTRACE_GETREGSET with NT_METAG_RPIPE.
|
|
*/
|
|
struct user_rp_state {
|
|
unsigned long long entries[6];
|
|
unsigned long mask;
|
|
};
|
|
|
|
#endif /* __ASSEMBLY__ */
|
|
|
|
#endif /* _UAPI_METAG_PTRACE_H */
|