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

TOMOYO Linux Cross Reference
Linux/arch/mips/include/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.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/mips/include/asm/ptrace.h (Version linux-6.12-rc7) and /arch/i386/include/asm-i386/ptrace.h (Version ccs-tools-1.8.9)


** Warning: Cannot open xref database.

  1 /*                                                  1 
  2  * This file is subject to the terms and condi    
  3  * License.  See the file "COPYING" in the mai    
  4  * for more details.                              
  5  *                                                
  6  * Copyright (C) 1994, 95, 96, 97, 98, 99, 200    
  7  * Copyright (C) 1999, 2000 Silicon Graphics,     
  8  */                                               
  9 #ifndef _ASM_PTRACE_H                             
 10 #define _ASM_PTRACE_H                             
 11                                                   
 12                                                   
 13 #include <linux/compiler.h>                       
 14 #include <linux/linkage.h>                        
 15 #include <linux/types.h>                          
 16 #include <asm/isadep.h>                           
 17 #include <asm/page.h>                             
 18 #include <asm/thread_info.h>                      
 19 #include <uapi/asm/ptrace.h>                      
 20                                                   
 21 /*                                                
 22  * This struct defines the way the registers a    
 23  * system call/exception. As usual the registe    
 24  *                                                
 25  * If you add a register here, also add it to     
 26  * arch/mips/kernel/ptrace.c.                     
 27  */                                               
 28 struct pt_regs {                                  
 29 #ifdef CONFIG_32BIT                               
 30         /* Pad bytes for argument save space o    
 31         unsigned long pad0[8];                    
 32 #endif                                            
 33                                                   
 34         /* Saved main processor registers. */     
 35         unsigned long regs[32];                   
 36                                                   
 37         /* Saved special registers. */            
 38         unsigned long cp0_status;                 
 39         unsigned long hi;                         
 40         unsigned long lo;                         
 41 #ifdef CONFIG_CPU_HAS_SMARTMIPS                   
 42         unsigned long acx;                        
 43 #endif                                            
 44         unsigned long cp0_badvaddr;               
 45         unsigned long cp0_cause;                  
 46         unsigned long cp0_epc;                    
 47 #ifdef CONFIG_CPU_CAVIUM_OCTEON                   
 48         unsigned long long mpl[6];        /* M    
 49         unsigned long long mtp[6];        /* M    
 50 #endif                                            
 51         unsigned long __last[0];                  
 52 } __aligned(8);                                   
 53                                                   
 54 static inline unsigned long kernel_stack_point    
 55 {                                                 
 56         return regs->regs[29];                    
 57 }                                                 
 58                                                   
 59 static inline void instruction_pointer_set(str    
 60                                            uns    
 61 {                                                 
 62         regs->cp0_epc = val;                      
 63         regs->cp0_cause &= ~CAUSEF_BD;            
 64 }                                                 
 65                                                   
 66 /* Query offset/name of register from its name    
 67 extern int regs_query_register_offset(const ch    
 68 #define MAX_REG_OFFSET (offsetof(struct pt_reg    
 69                                                   
 70 /**                                               
 71  * regs_get_register() - get register value fr    
 72  * @regs:       pt_regs from which register va    
 73  * @offset:     offset number of the register.    
 74  *                                                
 75  * regs_get_register returns the value of a re    
 76  * offset of the register in struct pt_regs ad    
 77  * If @offset is bigger than MAX_REG_OFFSET, t    
 78  */                                               
 79 static inline unsigned long regs_get_register(    
 80                                                   
 81 {                                                 
 82         if (unlikely(offset > MAX_REG_OFFSET))    
 83                 return 0;                         
 84                                                   
 85         return *(unsigned long *)((unsigned lo    
 86 }                                                 
 87                                                   
 88 /**                                               
 89  * regs_within_kernel_stack() - check the addr    
 90  * @regs:       pt_regs which contains kernel     
 91  * @addr:       address which is checked.         
 92  *                                                
 93  * regs_within_kernel_stack() checks @addr is     
 94  * If @addr is within the kernel stack, it ret    
 95  */                                               
 96 static inline int regs_within_kernel_stack(str    
 97                                            uns    
 98 {                                                 
 99         return ((addr & ~(THREAD_SIZE - 1))  =    
100                 (kernel_stack_pointer(regs) &     
101 }                                                 
102                                                   
103 /**                                               
104  * regs_get_kernel_stack_nth() - get Nth entry    
105  * @regs:       pt_regs which contains kernel     
106  * @n:          stack entry number.               
107  *                                                
108  * regs_get_kernel_stack_nth() returns @n th e    
109  * is specified by @regs. If the @n th entry i    
110  * this returns 0.                                
111  */                                               
112 static inline unsigned long regs_get_kernel_st    
113                                                   
114 {                                                 
115         unsigned long *addr = (unsigned long *    
116                                                   
117         addr += n;                                
118         if (regs_within_kernel_stack(regs, (un    
119                 return *addr;                     
120         else                                      
121                 return 0;                         
122 }                                                 
123                                                   
124 struct task_struct;                               
125                                                   
126 extern int ptrace_getregs(struct task_struct *    
127         struct user_pt_regs __user *data);        
128 extern int ptrace_setregs(struct task_struct *    
129         struct user_pt_regs __user *data);        
130                                                   
131 extern int ptrace_getfpregs(struct task_struct    
132 extern int ptrace_setfpregs(struct task_struct    
133                                                   
134 extern int ptrace_get_watch_regs(struct task_s    
135         struct pt_watch_regs __user *addr);       
136 extern int ptrace_set_watch_regs(struct task_s    
137         struct pt_watch_regs __user *addr);       
138                                                   
139 /*                                                
140  * Does the process account for user or for sy    
141  */                                               
142 #define user_mode(regs) (((regs)->cp0_status &    
143                                                   
144 static inline int is_syscall_success(struct pt    
145 {                                                 
146         return !regs->regs[7];                    
147 }                                                 
148                                                   
149 static inline long regs_return_value(struct pt    
150 {                                                 
151         if (is_syscall_success(regs) || !user_    
152                 return regs->regs[2];             
153         else                                      
154                 return -regs->regs[2];            
155 }                                                 
156                                                   
157 #define instruction_pointer(regs) ((regs)->cp0    
158 extern unsigned long exception_ip(struct pt_re    
159 #define exception_ip(regs) exception_ip(regs)     
160 #define profile_pc(regs) instruction_pointer(r    
161                                                   
162 extern asmlinkage long syscall_trace_enter(str    
163 extern asmlinkage void syscall_trace_leave(str    
164                                                   
165 extern void die(const char *, struct pt_regs *    
166                                                   
167 static inline void die_if_kernel(const char *s    
168 {                                                 
169         if (unlikely(!user_mode(regs)))           
170                 die(str, regs);                   
171 }                                                 
172                                                   
173 #define current_pt_regs()                         
174 ({                                                
175         unsigned long sp = (unsigned long)__bu    
176         (struct pt_regs *)((sp | (THREAD_SIZE     
177 })                                                
178                                                   
179 /* Helpers for working with the user stack poi    
180                                                   
181 static inline unsigned long user_stack_pointer    
182 {                                                 
183         return regs->regs[29];                    
184 }                                                 
185                                                   
186 static inline void user_stack_pointer_set(stru    
187         unsigned long val)                        
188 {                                                 
189         regs->regs[29] = val;                     
190 }                                                 
191                                                   
192 #endif /* _ASM_PTRACE_H */                        
193                                                   

~ [ 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