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

TOMOYO Linux Cross Reference
Linux/arch/powerpc/include/asm/syscall.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ 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/powerpc/include/asm/syscall.h (Architecture sparc) and /arch/sparc64/include/asm-sparc64/syscall.h (Architecture sparc64)


  1 /* SPDX-License-Identifier: GPL-2.0-only */         1 
  2 /*                                                
  3  * Access to user system call parameters and r    
  4  *                                                
  5  * Copyright (C) 2008 Red Hat, Inc.  All right    
  6  *                                                
  7  * See asm-generic/syscall.h for descriptions     
  8  */                                               
  9                                                   
 10 #ifndef _ASM_SYSCALL_H                            
 11 #define _ASM_SYSCALL_H  1                         
 12                                                   
 13 #include <uapi/linux/audit.h>                     
 14 #include <linux/sched.h>                          
 15 #include <linux/thread_info.h>                    
 16                                                   
 17 #ifdef CONFIG_ARCH_HAS_SYSCALL_WRAPPER            
 18 typedef long (*syscall_fn)(const struct pt_reg    
 19 #else                                             
 20 typedef long (*syscall_fn)(unsigned long, unsi    
 21                            unsigned long, unsi    
 22 #endif                                            
 23                                                   
 24 /* ftrace syscalls requires exporting the sys_    
 25 extern const syscall_fn sys_call_table[];         
 26 extern const syscall_fn compat_sys_call_table[    
 27                                                   
 28 static inline int syscall_get_nr(struct task_s    
 29 {                                                 
 30         /*                                        
 31          * Note that we are returning an int h    
 32          * 32-bit negative 1, will be interpre    
 33          * This is important for seccomp so th    
 34          * to reject the syscall.                 
 35          */                                       
 36         if (trap_is_syscall(regs))                
 37                 return regs->gpr[0];              
 38         else                                      
 39                 return -1;                        
 40 }                                                 
 41                                                   
 42 static inline void syscall_rollback(struct tas    
 43                                     struct pt_    
 44 {                                                 
 45         regs->gpr[3] = regs->orig_gpr3;           
 46 }                                                 
 47                                                   
 48 static inline long syscall_get_error(struct ta    
 49                                      struct pt    
 50 {                                                 
 51         if (trap_is_scv(regs)) {                  
 52                 unsigned long error = regs->gp    
 53                                                   
 54                 return IS_ERR_VALUE(error) ? e    
 55         } else {                                  
 56                 /*                                
 57                  * If the system call failed,     
 58                  * regs->gpr[3] contains a pos    
 59                  */                               
 60                 return (regs->ccr & 0x10000000    
 61         }                                         
 62 }                                                 
 63                                                   
 64 static inline long syscall_get_return_value(st    
 65                                             st    
 66 {                                                 
 67         return regs->gpr[3];                      
 68 }                                                 
 69                                                   
 70 static inline void syscall_set_return_value(st    
 71                                             st    
 72                                             in    
 73 {                                                 
 74         if (trap_is_scv(regs)) {                  
 75                 regs->gpr[3] = (long) error ?:    
 76         } else {                                  
 77                 /*                                
 78                  * In the general case it's no    
 79                  * CCR here, as the syscall ex    
 80                  * However there are some plac    
 81                  * check ccr to decide if the     
 82                  */                               
 83                 if (error) {                      
 84                         regs->ccr |= 0x1000000    
 85                         regs->gpr[3] = error;     
 86                 } else {                          
 87                         regs->ccr &= ~0x100000    
 88                         regs->gpr[3] = val;       
 89                 }                                 
 90         }                                         
 91 }                                                 
 92                                                   
 93 static inline void syscall_get_arguments(struc    
 94                                          struc    
 95                                          unsig    
 96 {                                                 
 97         unsigned long val, mask = -1UL;           
 98         unsigned int n = 6;                       
 99                                                   
100         if (is_tsk_32bit_task(task))              
101                 mask = 0xffffffff;                
102                                                   
103         while (n--) {                             
104                 if (n == 0)                       
105                         val = regs->orig_gpr3;    
106                 else                              
107                         val = regs->gpr[3 + n]    
108                                                   
109                 args[n] = val & mask;             
110         }                                         
111 }                                                 
112                                                   
113 static inline int syscall_get_arch(struct task    
114 {                                                 
115         if (is_tsk_32bit_task(task))              
116                 return AUDIT_ARCH_PPC;            
117         else if (IS_ENABLED(CONFIG_CPU_LITTLE_    
118                 return AUDIT_ARCH_PPC64LE;        
119         else                                      
120                 return AUDIT_ARCH_PPC64;          
121 }                                                 
122 #endif  /* _ASM_SYSCALL_H */                      
123                                                   

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