~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/loongarch/include/uapi/asm/ptrace.h

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/loongarch/include/uapi/asm/ptrace.h (Architecture i386) and /arch/sparc/include/uapi/asm/ptrace.h (Architecture sparc)


  1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linu !!   1 /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
  2 /*                                             !!   2 #ifndef _UAPI__SPARC_PTRACE_H
  3  * Author: Hanlu Li <lihanlu@loongson.cn>      !!   3 #define _UAPI__SPARC_PTRACE_H
  4  *         Huacai Chen <chenhuacai@loongson.cn !!   4 
  5  *                                             !!   5 #if defined(__sparc__) && defined(__arch64__)
  6  * Copyright (C) 2020-2022 Loongson Technology !!   6 /* 64 bit sparc */
                                                   >>   7 #include <asm/pstate.h>
                                                   >>   8 
                                                   >>   9 /* This struct defines the way the registers are stored on the
                                                   >>  10  * stack during a system call and basically all traps.
                                                   >>  11  */
                                                   >>  12 
                                                   >>  13 /* This magic value must have the low 9 bits clear,
                                                   >>  14  * as that is where we encode the %tt value, see below.
  7  */                                                15  */
  8 #ifndef _UAPI_ASM_PTRACE_H                     !!  16 #define PT_REGS_MAGIC 0x57ac6c00
  9 #define _UAPI_ASM_PTRACE_H                     !!  17 
                                                   >>  18 #ifndef __ASSEMBLY__
 10                                                    19 
 11 #include <linux/types.h>                           20 #include <linux/types.h>
 12                                                    21 
 13 #ifndef __KERNEL__                             !!  22 struct pt_regs {
 14 #include <stdint.h>                            !!  23         unsigned long u_regs[16]; /* globals and ins */
 15 #endif                                         !!  24         unsigned long tstate;
 16                                                !!  25         unsigned long tpc;
 17 /*                                             !!  26         unsigned long tnpc;
 18  * For PTRACE_{POKE,PEEK}USR. 0 - 31 are GPRs, !!  27         unsigned int y;
 19  * 32 is syscall's original ARG0, 33 is PC, 34 !!  28 
 20  */                                            !!  29         /* We encode a magic number, PT_REGS_MAGIC, along
 21 #define GPR_BASE        0                      !!  30          * with the %tt (trap type) register value at trap
 22 #define GPR_NUM         32                     !!  31          * entry time.  The magic number allows us to identify
 23 #define GPR_END         (GPR_BASE + GPR_NUM -  !!  32          * accurately a trap stack frame in the stack
 24 #define ARG0            (GPR_END + 1)          !!  33          * unwinder, and the %tt value allows us to test
 25 #define PC              (GPR_END + 2)          !!  34          * things like "in a system call" etc. for an arbitray
 26 #define BADVADDR        (GPR_END + 3)          !!  35          * process.
                                                   >>  36          *
                                                   >>  37          * The PT_REGS_MAGIC is chosen such that it can be
                                                   >>  38          * loaded completely using just a sethi instruction.
                                                   >>  39          */
                                                   >>  40         unsigned int magic;
                                                   >>  41 };
 27                                                    42 
 28 #define NUM_FPU_REGS    32                     !!  43 struct pt_regs32 {
                                                   >>  44         unsigned int psr;
                                                   >>  45         unsigned int pc;
                                                   >>  46         unsigned int npc;
                                                   >>  47         unsigned int y;
                                                   >>  48         unsigned int u_regs[16]; /* globals and ins */
                                                   >>  49 };
 29                                                    50 
 30 struct user_pt_regs {                          !!  51 /* A V9 register window */
 31         /* Main processor registers. */        !!  52 struct reg_window {
 32         unsigned long regs[32];                !!  53         unsigned long locals[8];
                                                   >>  54         unsigned long ins[8];
                                                   >>  55 };
 33                                                    56 
 34         /* Original syscall arg0. */           !!  57 /* A 32-bit register window. */
 35         unsigned long orig_a0;                 !!  58 struct reg_window32 {
                                                   >>  59         unsigned int locals[8];
                                                   >>  60         unsigned int ins[8];
                                                   >>  61 };
 36                                                    62 
 37         /* Special CSR registers. */           !!  63 /* A V9 Sparc stack frame */
 38         unsigned long csr_era;                 !!  64 struct sparc_stackf {
 39         unsigned long csr_badv;                !!  65         unsigned long locals[8];
 40         unsigned long reserved[10];            !!  66         unsigned long ins[6];
 41 } __attribute__((aligned(8)));                 !!  67         struct sparc_stackf *fp;
                                                   >>  68         unsigned long callers_pc;
                                                   >>  69         char *structptr;
                                                   >>  70         unsigned long xargs[6];
                                                   >>  71         unsigned long xxargs[1];
                                                   >>  72 };
 42                                                    73 
 43 struct user_fp_state {                         !!  74 /* A 32-bit Sparc stack frame */
 44         uint64_t fpr[32];                      !!  75 struct sparc_stackf32 {
 45         uint64_t fcc;                          !!  76         unsigned int locals[8];
 46         uint32_t fcsr;                         !!  77         unsigned int ins[6];
                                                   >>  78         unsigned int fp;
                                                   >>  79         unsigned int callers_pc;
                                                   >>  80         unsigned int structptr;
                                                   >>  81         unsigned int xargs[6];
                                                   >>  82         unsigned int xxargs[1];
 47 };                                                 83 };
 48                                                    84 
 49 struct user_lsx_state {                        !!  85 struct sparc_trapf {
 50         /* 32 registers, 128 bits width per re !!  86         unsigned long locals[8];
 51         uint64_t vregs[32*2];                  !!  87         unsigned long ins[8];
                                                   >>  88         unsigned long _unused;
                                                   >>  89         struct pt_regs *regs;
 52 };                                                 90 };
                                                   >>  91 #endif /* (!__ASSEMBLY__) */
                                                   >>  92 #else
                                                   >>  93 /* 32 bit sparc */
                                                   >>  94 
                                                   >>  95 #include <asm/psr.h>
 53                                                    96 
 54 struct user_lasx_state {                       !!  97 /* This struct defines the way the registers are stored on the
 55         /* 32 registers, 256 bits width per re !!  98  * stack during a system call and basically all traps.
 56         uint64_t vregs[32*4];                  !!  99  */
                                                   >> 100 #ifndef __ASSEMBLY__
                                                   >> 101 
                                                   >> 102 #include <linux/types.h>
                                                   >> 103 
                                                   >> 104 struct pt_regs {
                                                   >> 105         unsigned long psr;
                                                   >> 106         unsigned long pc;
                                                   >> 107         unsigned long npc;
                                                   >> 108         unsigned long y;
                                                   >> 109         unsigned long u_regs[16]; /* globals and ins */
 57 };                                                110 };
 58                                                   111 
 59 struct user_lbt_state {                        !! 112 /* A 32-bit register window. */
 60         uint64_t scr[4];                       !! 113 struct reg_window32 {
 61         uint32_t eflags;                       !! 114         unsigned long locals[8];
 62         uint32_t ftop;                         !! 115         unsigned long ins[8];
 63 };                                                116 };
 64                                                   117 
 65 struct user_watch_state {                      !! 118 /* A Sparc stack frame */
 66         uint64_t dbg_info;                     !! 119 struct sparc_stackf {
 67         struct {                               !! 120         unsigned long locals[8];
 68                 uint64_t    addr;              !! 121         unsigned long ins[6];
 69                 uint64_t    mask;              !! 122         struct sparc_stackf *fp;
 70                 uint32_t    ctrl;              !! 123         unsigned long callers_pc;
 71                 uint32_t    pad;               !! 124         char *structptr;
 72         } dbg_regs[8];                         !! 125         unsigned long xargs[6];
                                                   >> 126         unsigned long xxargs[1];
 73 };                                                127 };
                                                   >> 128 #endif /* (!__ASSEMBLY__) */
                                                   >> 129 
                                                   >> 130 #endif /* (defined(__sparc__) && defined(__arch64__))*/
                                                   >> 131 
                                                   >> 132 #ifndef __ASSEMBLY__
                                                   >> 133 
                                                   >> 134 #define TRACEREG_SZ     sizeof(struct pt_regs)
                                                   >> 135 #define STACKFRAME_SZ   sizeof(struct sparc_stackf)
                                                   >> 136 
                                                   >> 137 #define TRACEREG32_SZ   sizeof(struct pt_regs32)
                                                   >> 138 #define STACKFRAME32_SZ sizeof(struct sparc_stackf32)
                                                   >> 139 
                                                   >> 140 #endif /* (!__ASSEMBLY__) */
                                                   >> 141 
                                                   >> 142 #define UREG_G0        0
                                                   >> 143 #define UREG_G1        1
                                                   >> 144 #define UREG_G2        2
                                                   >> 145 #define UREG_G3        3
                                                   >> 146 #define UREG_G4        4
                                                   >> 147 #define UREG_G5        5
                                                   >> 148 #define UREG_G6        6
                                                   >> 149 #define UREG_G7        7
                                                   >> 150 #define UREG_I0        8
                                                   >> 151 #define UREG_I1        9
                                                   >> 152 #define UREG_I2        10
                                                   >> 153 #define UREG_I3        11
                                                   >> 154 #define UREG_I4        12
                                                   >> 155 #define UREG_I5        13
                                                   >> 156 #define UREG_I6        14
                                                   >> 157 #define UREG_I7        15
                                                   >> 158 #define UREG_FP        UREG_I6
                                                   >> 159 #define UREG_RETPC     UREG_I7
                                                   >> 160 
                                                   >> 161 #if defined(__sparc__) && defined(__arch64__)
                                                   >> 162 /* 64 bit sparc */
                                                   >> 163 
                                                   >> 164 #ifndef __ASSEMBLY__
                                                   >> 165 
                                                   >> 166 
                                                   >> 167 #else /* __ASSEMBLY__ */
                                                   >> 168 /* For assembly code. */
                                                   >> 169 #define TRACEREG_SZ             0xa0
                                                   >> 170 #define STACKFRAME_SZ           0xc0
                                                   >> 171 
                                                   >> 172 #define TRACEREG32_SZ           0x50
                                                   >> 173 #define STACKFRAME32_SZ         0x60
                                                   >> 174 #endif /* __ASSEMBLY__ */
                                                   >> 175 
                                                   >> 176 #else /* (defined(__sparc__) && defined(__arch64__)) */
                                                   >> 177 
                                                   >> 178 /* 32 bit sparc */
                                                   >> 179 
                                                   >> 180 #ifndef __ASSEMBLY__
                                                   >> 181 
                                                   >> 182 
                                                   >> 183 #else /* (!__ASSEMBLY__) */
                                                   >> 184 /* For assembly code. */
                                                   >> 185 #define TRACEREG_SZ       0x50
                                                   >> 186 #define STACKFRAME_SZ     0x60
                                                   >> 187 #endif /* (!__ASSEMBLY__) */
                                                   >> 188 
                                                   >> 189 #endif /* (defined(__sparc__) && defined(__arch64__)) */
                                                   >> 190 
                                                   >> 191 
                                                   >> 192 /* These are for pt_regs. */
                                                   >> 193 #define PT_V9_G0     0x00
                                                   >> 194 #define PT_V9_G1     0x08
                                                   >> 195 #define PT_V9_G2     0x10
                                                   >> 196 #define PT_V9_G3     0x18
                                                   >> 197 #define PT_V9_G4     0x20
                                                   >> 198 #define PT_V9_G5     0x28
                                                   >> 199 #define PT_V9_G6     0x30
                                                   >> 200 #define PT_V9_G7     0x38
                                                   >> 201 #define PT_V9_I0     0x40
                                                   >> 202 #define PT_V9_I1     0x48
                                                   >> 203 #define PT_V9_I2     0x50
                                                   >> 204 #define PT_V9_I3     0x58
                                                   >> 205 #define PT_V9_I4     0x60
                                                   >> 206 #define PT_V9_I5     0x68
                                                   >> 207 #define PT_V9_I6     0x70
                                                   >> 208 #define PT_V9_FP     PT_V9_I6
                                                   >> 209 #define PT_V9_I7     0x78
                                                   >> 210 #define PT_V9_TSTATE 0x80
                                                   >> 211 #define PT_V9_TPC    0x88
                                                   >> 212 #define PT_V9_TNPC   0x90
                                                   >> 213 #define PT_V9_Y      0x98
                                                   >> 214 #define PT_V9_MAGIC  0x9c
                                                   >> 215 #define PT_TSTATE       PT_V9_TSTATE
                                                   >> 216 #define PT_TPC          PT_V9_TPC
                                                   >> 217 #define PT_TNPC         PT_V9_TNPC
                                                   >> 218 
                                                   >> 219 /* These for pt_regs32. */
                                                   >> 220 #define PT_PSR    0x0
                                                   >> 221 #define PT_PC     0x4
                                                   >> 222 #define PT_NPC    0x8
                                                   >> 223 #define PT_Y      0xc
                                                   >> 224 #define PT_G0     0x10
                                                   >> 225 #define PT_WIM    PT_G0
                                                   >> 226 #define PT_G1     0x14
                                                   >> 227 #define PT_G2     0x18
                                                   >> 228 #define PT_G3     0x1c
                                                   >> 229 #define PT_G4     0x20
                                                   >> 230 #define PT_G5     0x24
                                                   >> 231 #define PT_G6     0x28
                                                   >> 232 #define PT_G7     0x2c
                                                   >> 233 #define PT_I0     0x30
                                                   >> 234 #define PT_I1     0x34
                                                   >> 235 #define PT_I2     0x38
                                                   >> 236 #define PT_I3     0x3c
                                                   >> 237 #define PT_I4     0x40
                                                   >> 238 #define PT_I5     0x44
                                                   >> 239 #define PT_I6     0x48
                                                   >> 240 #define PT_FP     PT_I6
                                                   >> 241 #define PT_I7     0x4c
                                                   >> 242 
                                                   >> 243 /* Reg_window offsets */
                                                   >> 244 #define RW_V9_L0     0x00
                                                   >> 245 #define RW_V9_L1     0x08
                                                   >> 246 #define RW_V9_L2     0x10
                                                   >> 247 #define RW_V9_L3     0x18
                                                   >> 248 #define RW_V9_L4     0x20
                                                   >> 249 #define RW_V9_L5     0x28
                                                   >> 250 #define RW_V9_L6     0x30
                                                   >> 251 #define RW_V9_L7     0x38
                                                   >> 252 #define RW_V9_I0     0x40
                                                   >> 253 #define RW_V9_I1     0x48
                                                   >> 254 #define RW_V9_I2     0x50
                                                   >> 255 #define RW_V9_I3     0x58
                                                   >> 256 #define RW_V9_I4     0x60
                                                   >> 257 #define RW_V9_I5     0x68
                                                   >> 258 #define RW_V9_I6     0x70
                                                   >> 259 #define RW_V9_I7     0x78
                                                   >> 260 
                                                   >> 261 #define RW_L0     0x00
                                                   >> 262 #define RW_L1     0x04
                                                   >> 263 #define RW_L2     0x08
                                                   >> 264 #define RW_L3     0x0c
                                                   >> 265 #define RW_L4     0x10
                                                   >> 266 #define RW_L5     0x14
                                                   >> 267 #define RW_L6     0x18
                                                   >> 268 #define RW_L7     0x1c
                                                   >> 269 #define RW_I0     0x20
                                                   >> 270 #define RW_I1     0x24
                                                   >> 271 #define RW_I2     0x28
                                                   >> 272 #define RW_I3     0x2c
                                                   >> 273 #define RW_I4     0x30
                                                   >> 274 #define RW_I5     0x34
                                                   >> 275 #define RW_I6     0x38
                                                   >> 276 #define RW_I7     0x3c
                                                   >> 277 
                                                   >> 278 /* Stack_frame offsets */
                                                   >> 279 #define SF_V9_L0     0x00
                                                   >> 280 #define SF_V9_L1     0x08
                                                   >> 281 #define SF_V9_L2     0x10
                                                   >> 282 #define SF_V9_L3     0x18
                                                   >> 283 #define SF_V9_L4     0x20
                                                   >> 284 #define SF_V9_L5     0x28
                                                   >> 285 #define SF_V9_L6     0x30
                                                   >> 286 #define SF_V9_L7     0x38
                                                   >> 287 #define SF_V9_I0     0x40
                                                   >> 288 #define SF_V9_I1     0x48
                                                   >> 289 #define SF_V9_I2     0x50
                                                   >> 290 #define SF_V9_I3     0x58
                                                   >> 291 #define SF_V9_I4     0x60
                                                   >> 292 #define SF_V9_I5     0x68
                                                   >> 293 #define SF_V9_FP     0x70
                                                   >> 294 #define SF_V9_PC     0x78
                                                   >> 295 #define SF_V9_RETP   0x80
                                                   >> 296 #define SF_V9_XARG0  0x88
                                                   >> 297 #define SF_V9_XARG1  0x90
                                                   >> 298 #define SF_V9_XARG2  0x98
                                                   >> 299 #define SF_V9_XARG3  0xa0
                                                   >> 300 #define SF_V9_XARG4  0xa8
                                                   >> 301 #define SF_V9_XARG5  0xb0
                                                   >> 302 #define SF_V9_XXARG  0xb8
                                                   >> 303 
                                                   >> 304 #define SF_L0     0x00
                                                   >> 305 #define SF_L1     0x04
                                                   >> 306 #define SF_L2     0x08
                                                   >> 307 #define SF_L3     0x0c
                                                   >> 308 #define SF_L4     0x10
                                                   >> 309 #define SF_L5     0x14
                                                   >> 310 #define SF_L6     0x18
                                                   >> 311 #define SF_L7     0x1c
                                                   >> 312 #define SF_I0     0x20
                                                   >> 313 #define SF_I1     0x24
                                                   >> 314 #define SF_I2     0x28
                                                   >> 315 #define SF_I3     0x2c
                                                   >> 316 #define SF_I4     0x30
                                                   >> 317 #define SF_I5     0x34
                                                   >> 318 #define SF_FP     0x38
                                                   >> 319 #define SF_PC     0x3c
                                                   >> 320 #define SF_RETP   0x40
                                                   >> 321 #define SF_XARG0  0x44
                                                   >> 322 #define SF_XARG1  0x48
                                                   >> 323 #define SF_XARG2  0x4c
                                                   >> 324 #define SF_XARG3  0x50
                                                   >> 325 #define SF_XARG4  0x54
                                                   >> 326 #define SF_XARG5  0x58
                                                   >> 327 #define SF_XXARG  0x5c
                                                   >> 328 
                                                   >> 329 
                                                   >> 330 /* Stuff for the ptrace system call */
                                                   >> 331 #define PTRACE_SPARC_DETACH       11
                                                   >> 332 #define PTRACE_GETREGS            12
                                                   >> 333 #define PTRACE_SETREGS            13
                                                   >> 334 #define PTRACE_GETFPREGS          14
                                                   >> 335 #define PTRACE_SETFPREGS          15
                                                   >> 336 #define PTRACE_READDATA           16
                                                   >> 337 #define PTRACE_WRITEDATA          17
                                                   >> 338 #define PTRACE_READTEXT           18
                                                   >> 339 #define PTRACE_WRITETEXT          19
                                                   >> 340 #define PTRACE_GETFPAREGS         20
                                                   >> 341 #define PTRACE_SETFPAREGS         21
                                                   >> 342 
                                                   >> 343 /* There are for debugging 64-bit processes, either from a 32 or 64 bit
                                                   >> 344  * parent.  Thus their complements are for debugging 32-bit processes only.
                                                   >> 345  */
 74                                                   346 
 75 #define PTRACE_SYSEMU                   0x1f   !! 347 #define PTRACE_GETREGS64          22
 76 #define PTRACE_SYSEMU_SINGLESTEP        0x20   !! 348 #define PTRACE_SETREGS64          23
                                                   >> 349 /* PTRACE_SYSCALL is 24 */
                                                   >> 350 #define PTRACE_GETFPREGS64        25
                                                   >> 351 #define PTRACE_SETFPREGS64        26
 77                                                   352 
 78 #endif /* _UAPI_ASM_PTRACE_H */                !! 353 #endif /* _UAPI__SPARC_PTRACE_H */
 79                                                   354 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php