• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #ifndef _UAPI_METAG_PTRACE_H
2 #define _UAPI_METAG_PTRACE_H
3 
4 #ifndef __ASSEMBLY__
5 
6 /*
7  * These are the layouts of the regsets returned by the GETREGSET ptrace call
8  */
9 
10 /* user_gp_regs::status */
11 
12 /* CBMarker bit (indicates catch state / catch replay) */
13 #define USER_GP_REGS_STATUS_CATCH_BIT		(1 << 22)
14 #define USER_GP_REGS_STATUS_CATCH_S		22
15 /* LSM_STEP field (load/store multiple step) */
16 #define USER_GP_REGS_STATUS_LSM_STEP_BITS	(0x7 << 8)
17 #define USER_GP_REGS_STATUS_LSM_STEP_S		8
18 /* SCC bit (indicates split 16x16 condition flags) */
19 #define USER_GP_REGS_STATUS_SCC_BIT		(1 << 4)
20 #define USER_GP_REGS_STATUS_SCC_S		4
21 
22 /* normal condition flags */
23 /* CF_Z bit (Zero flag) */
24 #define USER_GP_REGS_STATUS_CF_Z_BIT		(1 << 3)
25 #define USER_GP_REGS_STATUS_CF_Z_S		3
26 /* CF_N bit (Negative flag) */
27 #define USER_GP_REGS_STATUS_CF_N_BIT		(1 << 2)
28 #define USER_GP_REGS_STATUS_CF_N_S		2
29 /* CF_V bit (oVerflow flag) */
30 #define USER_GP_REGS_STATUS_CF_V_BIT		(1 << 1)
31 #define USER_GP_REGS_STATUS_CF_V_S		1
32 /* CF_C bit (Carry flag) */
33 #define USER_GP_REGS_STATUS_CF_C_BIT		(1 << 0)
34 #define USER_GP_REGS_STATUS_CF_C_S		0
35 
36 /* split 16x16 condition flags */
37 /* SCF_LZ bit (Low Zero flag) */
38 #define USER_GP_REGS_STATUS_SCF_LZ_BIT		(1 << 3)
39 #define USER_GP_REGS_STATUS_SCF_LZ_S		3
40 /* SCF_HZ bit (High Zero flag) */
41 #define USER_GP_REGS_STATUS_SCF_HZ_BIT		(1 << 2)
42 #define USER_GP_REGS_STATUS_SCF_HZ_S		2
43 /* SCF_HC bit (High Carry flag) */
44 #define USER_GP_REGS_STATUS_SCF_HC_BIT		(1 << 1)
45 #define USER_GP_REGS_STATUS_SCF_HC_S		1
46 /* SCF_LC bit (Low Carry flag) */
47 #define USER_GP_REGS_STATUS_SCF_LC_BIT		(1 << 0)
48 #define USER_GP_REGS_STATUS_SCF_LC_S		0
49 
50 /**
51  * struct user_gp_regs - User general purpose registers
52  * @dx:		GP data unit regs (dx[reg][unit] = D{unit:0-1}.{reg:0-7})
53  * @ax:		GP address unit regs (ax[reg][unit] = A{unit:0-1}.{reg:0-3})
54  * @pc:		PC register
55  * @status:	TXSTATUS register (condition flags, LSM_STEP etc)
56  * @rpt:	TXRPT registers (branch repeat counter)
57  * @bpobits:	TXBPOBITS register ("branch prediction other" bits)
58  * @mode:	TXMODE register
59  * @_pad1:	Reserved padding to make sizeof obviously 64bit aligned
60  *
61  * This is the user-visible general purpose register state structure.
62  *
63  * It can be accessed through PTRACE_GETREGSET with NT_PRSTATUS.
64  *
65  * It is also used in the signal context.
66  */
67 struct user_gp_regs {
68 	unsigned long dx[8][2];
69 	unsigned long ax[4][2];
70 	unsigned long pc;
71 	unsigned long status;
72 	unsigned long rpt;
73 	unsigned long bpobits;
74 	unsigned long mode;
75 	unsigned long _pad1;
76 };
77 
78 /**
79  * struct user_cb_regs - User catch buffer registers
80  * @flags:	TXCATCH0 register (fault flags)
81  * @addr:	TXCATCH1 register (fault address)
82  * @data:	TXCATCH2 and TXCATCH3 registers (low and high data word)
83  *
84  * This is the user-visible catch buffer register state structure containing
85  * information about a failed memory access, and allowing the access to be
86  * modified and replayed.
87  *
88  * It can be accessed through PTRACE_GETREGSET with NT_METAG_CBUF.
89  */
90 struct user_cb_regs {
91 	unsigned long flags;
92 	unsigned long addr;
93 	unsigned long long data;
94 };
95 
96 /**
97  * struct user_rp_state - User read pipeline state
98  * @entries:	Read pipeline entries
99  * @mask:	Mask of valid pipeline entries (RPMask from TXDIVTIME register)
100  *
101  * This is the user-visible read pipeline state structure containing the entries
102  * currently in the read pipeline and the mask of valid entries.
103  *
104  * It can be accessed through PTRACE_GETREGSET with NT_METAG_RPIPE.
105  */
106 struct user_rp_state {
107 	unsigned long long entries[6];
108 	unsigned long mask;
109 };
110 
111 #endif /* __ASSEMBLY__ */
112 
113 #endif /* _UAPI_METAG_PTRACE_H */
114