| #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 */ |