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

TOMOYO Linux Cross Reference
Linux/arch/xtensa/include/asm/traps.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/xtensa/include/asm/traps.h (Architecture sparc) and /arch/alpha/include/asm-alpha/traps.h (Architecture alpha)


  1 /*                                                  1 
  2  * arch/xtensa/include/asm/traps.h                
  3  *                                                
  4  * This file is subject to the terms and condi    
  5  * License.  See the file "COPYING" in the mai    
  6  * for more details.                              
  7  *                                                
  8  * Copyright (C) 2012 Tensilica Inc.              
  9  */                                               
 10 #ifndef _XTENSA_TRAPS_H                           
 11 #define _XTENSA_TRAPS_H                           
 12                                                   
 13 #include <asm/ptrace.h>                           
 14                                                   
 15 typedef void xtensa_exception_handler(struct p    
 16                                                   
 17 /*                                                
 18  * Per-CPU exception handling data structure.     
 19  * EXCSAVE1 points to it.                         
 20  */                                               
 21 struct exc_table {                                
 22         /* Kernel Stack */                        
 23         void *kstk;                               
 24         /* Double exception save area for a0 *    
 25         unsigned long double_save;                
 26         /* Fixup handler */                       
 27         void *fixup;                              
 28         /* For passing a parameter to fixup */    
 29         void *fixup_param;                        
 30 #if XTENSA_HAVE_COPROCESSORS                      
 31         /* Pointers to owner struct thread_inf    
 32         struct thread_info *coprocessor_owner[    
 33 #endif                                            
 34         /* Fast user exception handlers */        
 35         void *fast_user_handler[EXCCAUSE_N];      
 36         /* Fast kernel exception handlers */      
 37         void *fast_kernel_handler[EXCCAUSE_N];    
 38         /* Default C-Handlers */                  
 39         xtensa_exception_handler *default_hand    
 40 };                                                
 41                                                   
 42 DECLARE_PER_CPU(struct exc_table, exc_table);     
 43                                                   
 44 xtensa_exception_handler *                        
 45 __init trap_set_handler(int cause, xtensa_exce    
 46                                                   
 47 asmlinkage void fast_illegal_instruction_user(    
 48 asmlinkage void fast_syscall_user(void);          
 49 asmlinkage void fast_alloca(void);                
 50 asmlinkage void fast_load_store(void);            
 51 asmlinkage void fast_unaligned(void);             
 52 asmlinkage void fast_second_level_miss(void);     
 53 asmlinkage void fast_store_prohibited(void);      
 54 asmlinkage void fast_coprocessor(void);           
 55                                                   
 56 asmlinkage void kernel_exception(void);           
 57 asmlinkage void user_exception(void);             
 58 asmlinkage void system_call(struct pt_regs *re    
 59                                                   
 60 void do_IRQ(int hwirq, struct pt_regs *regs);     
 61 void do_page_fault(struct pt_regs *regs);         
 62 void do_unhandled(struct pt_regs *regs);          
 63                                                   
 64 /* Initialize minimal exc_table structure suff    
 65 static inline void __init early_trap_init(void    
 66 {                                                 
 67         static struct exc_table init_exc_table    
 68 #ifdef CONFIG_XTENSA_LOAD_STORE                   
 69                 .fast_kernel_handler[EXCCAUSE_    
 70                         fast_load_store,          
 71 #endif                                            
 72 #ifdef CONFIG_MMU                                 
 73                 .fast_kernel_handler[EXCCAUSE_    
 74                         fast_second_level_miss    
 75 #endif                                            
 76         };                                        
 77         xtensa_set_sr(&init_exc_table, excsave    
 78 }                                                 
 79                                                   
 80 void secondary_trap_init(void);                   
 81                                                   
 82 static inline void spill_registers(void)          
 83 {                                                 
 84 #if defined(__XTENSA_WINDOWED_ABI__)              
 85 #if XCHAL_NUM_AREGS > 16                          
 86         __asm__ __volatile__ (                    
 87                 "       call8   1f\n"             
 88                 "       _j      2f\n"             
 89                 "       retw\n"                   
 90                 "       .align  4\n"              
 91                 "1:\n"                            
 92 #if XCHAL_NUM_AREGS == 32                         
 93                 "       _entry  a1, 32\n"         
 94                 "       addi    a8, a0, 3\n"      
 95                 "       _entry  a1, 16\n"         
 96                 "       mov     a12, a12\n"       
 97                 "       retw\n"                   
 98 #else                                             
 99                 "       _entry  a1, 48\n"         
100                 "       call12  1f\n"             
101                 "       retw\n"                   
102                 "       .align  4\n"              
103                 "1:\n"                            
104                 "       .rept   (" __stringify    
105                 "       _entry  a1, 48\n"         
106                 "       mov     a12, a0\n"        
107                 "       .endr\n"                  
108                 "       _entry  a1, 16\n"         
109 #if XCHAL_NUM_AREGS % 12 == 0                     
110                 "       mov     a12, a12\n"       
111 #elif XCHAL_NUM_AREGS % 12 == 4                   
112                 "       mov     a4, a4\n"         
113 #elif XCHAL_NUM_AREGS % 12 == 8                   
114                 "       mov     a8, a8\n"         
115 #endif                                            
116                 "       retw\n"                   
117 #endif                                            
118                 "2:\n"                            
119                 : : : "a8", "a9", "memory");      
120 #else                                             
121         __asm__ __volatile__ (                    
122                 "       mov     a12, a12\n"       
123                 : : : "memory");                  
124 #endif                                            
125 #endif                                            
126 }                                                 
127                                                   
128 struct debug_table {                              
129         /* Pointer to debug exception handler     
130         void (*debug_exception)(void);            
131         /* Temporary register save area */        
132         unsigned long debug_save[1];              
133 #ifdef CONFIG_HAVE_HW_BREAKPOINT                  
134         /* Save area for DBREAKC registers */     
135         unsigned long dbreakc_save[XCHAL_NUM_D    
136         /* Saved ICOUNT register */               
137         unsigned long icount_save;                
138         /* Saved ICOUNTLEVEL register */          
139         unsigned long icount_level_save;          
140 #endif                                            
141 };                                                
142                                                   
143 void debug_exception(void);                       
144                                                   
145 #endif /* _XTENSA_TRAPS_H */                      
146                                                   

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