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

TOMOYO Linux Cross Reference
Linux/arch/m68k/coldfire/entry.S

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/m68k/coldfire/entry.S (Version linux-6.12-rc7) and /arch/mips/coldfire/entry.S (Version linux-6.2.16)


  1 /* SPDX-License-Identifier: GPL-2.0-or-later      
  2  *                                                
  3  *  entry.S  -- interrupt and exception proces    
  4  *                                                
  5  *  Copyright (C) 1999-2007, Greg Ungerer (ger    
  6  *  Copyright (C) 1998  D. Jeff Dionne <jeff@li    
  7  *                      Kenneth Albanowski <kja    
  8  *  Copyright (C) 2000  Lineo Inc. (www.lineo.    
  9  *  Copyright (C) 2004-2006  Macq Electronique    
 10  *                                                
 11  * Based on:                                      
 12  *                                                
 13  *  linux/arch/m68k/kernel/entry.S                
 14  *                                                
 15  *  Copyright (C) 1991, 1992  Linus Torvalds      
 16  *                                                
 17  * Linux/m68k support by Hamish Macdonald         
 18  *                                                
 19  * 68060 fixes by Jesper Skov                     
 20  * ColdFire support by Greg Ungerer (gerg@snap    
 21  * 5307 fixes by David W. Miller                  
 22  * linux 2.4 support David McCullough <davidm@s    
 23  * Bug, speed and maintainability fixes by Phi<    
 24  */                                               
 25                                                   
 26 #include <linux/linkage.h>                        
 27 #include <asm/unistd.h>                           
 28 #include <asm/thread_info.h>                      
 29 #include <asm/errno.h>                            
 30 #include <asm/setup.h>                            
 31 #include <asm/asm-offsets.h>                      
 32 #include <asm/entry.h>                            
 33                                                   
 34 #ifdef CONFIG_COLDFIRE_SW_A7                      
 35 /*                                                
 36  *      Define software copies of the supervis    
 37  */                                               
 38 .bss                                              
 39 sw_ksp:                                           
 40 .long   0                                         
 41 sw_usp:                                           
 42 .long   0                                         
 43 #endif /* CONFIG_COLDFIRE_SW_A7 */                
 44                                                   
 45 .text                                             
 46                                                   
 47 .globl system_call                                
 48 .globl resume                                     
 49 .globl ret_from_exception                         
 50 .globl sys_call_table                             
 51 .globl inthandler                                 
 52                                                   
 53 enosys:                                           
 54         mov.l   #sys_ni_syscall,%d3               
 55         bra     1f                                
 56                                                   
 57 ENTRY(system_call)                                
 58         SAVE_ALL_SYS                              
 59         move    #0x2000,%sr             /* ena    
 60         GET_CURRENT(%d2)                          
 61                                                   
 62         cmpl    #NR_syscalls,%d0                  
 63         jcc     enosys                            
 64         lea     sys_call_table,%a0                
 65         lsll    #2,%d0                  /* mov    
 66         movel   %a0@(%d0),%d3                     
 67         jeq     enosys                            
 68                                                   
 69 1:                                                
 70         movel   %sp,%d2                 /* get    
 71         andl    #-THREAD_SIZE,%d2       /* at     
 72         movel   %d2,%a0                           
 73         movel   %a0@,%a1                /* sav    
 74         movel   %sp,%a1@(TASK_THREAD+THREAD_ES    
 75         btst    #(TIF_SYSCALL_TRACE%8),%a0@(TI    
 76         bnes    1f                                
 77                                                   
 78         movel   %d3,%a0                           
 79         jbsr    %a0@                              
 80         movel   %d0,%sp@(PT_OFF_D0)     /* sav    
 81         jra     ret_from_exception                
 82 1:                                                
 83         movel   #-ENOSYS,%d2            /* str    
 84         movel   %d2,PT_OFF_D0(%sp)      /* on     
 85         subql   #4,%sp                            
 86         SAVE_SWITCH_STACK                         
 87         jbsr    syscall_trace_enter               
 88         RESTORE_SWITCH_STACK                      
 89         addql   #4,%sp                            
 90         addql   #1,%d0                            
 91         jeq     ret_from_exception                
 92         movel   %d3,%a0                           
 93         jbsr    %a0@                              
 94         movel   %d0,%sp@(PT_OFF_D0)               
 95         subql   #4,%sp                  /* dum    
 96         SAVE_SWITCH_STACK                         
 97         jbsr    syscall_trace_leave               
 98         RESTORE_SWITCH_STACK                      
 99         addql   #4,%sp                            
100                                                   
101 ret_from_exception:                               
102         move    #0x2700,%sr             /* dis    
103         btst    #5,%sp@(PT_OFF_SR)      /* che    
104         jeq     Luser_return            /* if     
105                                                   
106 #ifdef CONFIG_PREEMPTION                          
107         movel   %sp,%d1                 /* get    
108         andl    #-THREAD_SIZE,%d1       /* at     
109         movel   %d1,%a0                           
110         movel   %a0@(TINFO_FLAGS),%d1   /* get    
111         andl    #(1<<TIF_NEED_RESCHED),%d1        
112         jeq     Lkernel_return                    
113                                                   
114         movel   %a0@(TINFO_PREEMPT),%d1           
115         cmpl    #0,%d1                            
116         jne     Lkernel_return                    
117                                                   
118         pea     Lkernel_return                    
119         jmp     preempt_schedule_irq    /* pre    
120 #endif                                            
121                                                   
122 Lkernel_return:                                   
123         moveml  %sp@,%d1-%d5/%a0-%a2              
124         lea     %sp@(32),%sp            /* spa    
125         movel   %sp@+,%d0                         
126         addql   #4,%sp                  /* ori    
127         addl    %sp@+,%sp               /* stk    
128         rte                                       
129                                                   
130 Luser_return:                                     
131         movel   %sp,%d1                 /* get    
132         andl    #-THREAD_SIZE,%d1       /* at     
133         movel   %d1,%a0                           
134         moveb   %a0@(TINFO_FLAGS+3),%d1 /* thr    
135         jne     Lwork_to_do             /* sti    
136                                                   
137 Lreturn:                                          
138         RESTORE_USER                              
139                                                   
140 Lwork_to_do:                                      
141         movel   %a0@(TINFO_FLAGS),%d1   /* get    
142         move    #0x2000,%sr             /* ena    
143         btst    #TIF_NEED_RESCHED,%d1             
144         jne     reschedule                        
145                                                   
146 Lsignal_return:                                   
147         subql   #4,%sp                  /* dum    
148         SAVE_SWITCH_STACK                         
149         pea     %sp@(SWITCH_STACK_SIZE)           
150         jsr     do_notify_resume                  
151         addql   #4,%sp                            
152         RESTORE_SWITCH_STACK                      
153         addql   #4,%sp                            
154         jmp     Luser_return                      
155                                                   
156 /*                                                
157  * This is the generic interrupt handler (for     
158  * sources). Calls up to high level code to do    
159  */                                               
160 ENTRY(inthandler)                                 
161         SAVE_ALL_INT                              
162         GET_CURRENT(%d2)                          
163                                                   
164         movew   %sp@(PT_OFF_FORMATVEC),%d0 /*     
165         andl    #0x03fc,%d0             /* mas    
166                                                   
167         movel   %sp,%sp@-               /* pus    
168         lsrl    #2,%d0                  /* cal    
169         movel   %d0,%sp@-               /* pus    
170         jbsr    do_IRQ                  /* cal    
171         lea     %sp@(8),%sp             /* pop    
172                                                   
173         bra     ret_from_exception                
174                                                   
175 /*                                                
176  * Beware - when entering resume, prev (the cu    
177  * in a0, next (the new task) is in a1, so don    
178  * registers until their contents are no longe    
179  */                                               
180 ENTRY(resume)                                     
181         movew   %sr,%d1                           
182         movew   %d1,%a0@(TASK_THREAD+THREAD_SR    
183         movel   %a0,%d1                           
184         SAVE_SWITCH_STACK                         
185         movel   %sp,%a0@(TASK_THREAD+THREAD_KS    
186         RDUSP                                     
187         movel   %a3,%a0@(TASK_THREAD+THREAD_US    
188 #ifdef CONFIG_MMU                                 
189         movel   %a1,%a2                           
190 #endif                                            
191         movel   %a1@(TASK_THREAD+THREAD_USP),%    
192         WRUSP                                     
193         movel   %a1@(TASK_THREAD+THREAD_KSP),%    
194         movew   %a1@(TASK_THREAD+THREAD_SR),%d    
195         movew   %d7,%sr                           
196         RESTORE_SWITCH_STACK                      
197         rts                                       
198                                                   
                                                      

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