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

TOMOYO Linux Cross Reference
Linux/arch/sh/kernel/cpu/sh3/swsusp.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/sh/kernel/cpu/sh3/swsusp.S (Architecture i386) and /arch/alpha/kernel/cpu/sh3/swsusp.S (Architecture alpha)


  1 /* SPDX-License-Identifier: GPL-2.0               
  2  *                                                
  3  * arch/sh/kernel/cpu/sh3/swsusp.S                
  4  *                                                
  5  * Copyright (C) 2009 Magnus Damm                 
  6  */                                               
  7 #include <linux/sys.h>                            
  8 #include <linux/errno.h>                          
  9 #include <linux/linkage.h>                        
 10 #include <asm/asm-offsets.h>                      
 11 #include <asm/page.h>                             
 12                                                   
 13 #define k0      r0                                
 14 #define k1      r1                                
 15 #define k2      r2                                
 16 #define k3      r3                                
 17 #define k4      r4                                
 18                                                   
 19 ! swsusp_arch_resume()                            
 20 ! - copy restore_pblist pages                     
 21 ! - restore registers from swsusp_arch_regs_cp    
 22                                                   
 23 ENTRY(swsusp_arch_resume)                         
 24         mov.l   1f, r15                           
 25         mov.l   2f, r4                            
 26         mov.l   @r4, r4                           
 27                                                   
 28 swsusp_copy_loop:                                 
 29         mov     r4, r0                            
 30         cmp/eq  #0, r0                            
 31         bt      swsusp_restore_regs               
 32                                                   
 33         mov.l   @(PBE_ADDRESS, r4), r2            
 34         mov.l   @(PBE_ORIG_ADDRESS, r4), r5       
 35                                                   
 36         mov     #(PAGE_SIZE >> 10), r3            
 37         shll8   r3                                
 38         shlr2   r3 /* PAGE_SIZE / 16 */           
 39 swsusp_copy_page:                                 
 40         dt      r3                                
 41         mov.l   @r2+,r1   /*  16n+0 */            
 42         mov.l   r1,@r5                            
 43         add     #4,r5                             
 44         mov.l   @r2+,r1   /*  16n+4 */            
 45         mov.l   r1,@r5                            
 46         add     #4,r5                             
 47         mov.l   @r2+,r1   /*  16n+8 */            
 48         mov.l   r1,@r5                            
 49         add     #4,r5                             
 50         mov.l   @r2+,r1   /*  16n+12 */           
 51         mov.l   r1,@r5                            
 52         bf/s    swsusp_copy_page                  
 53          add    #4,r5                             
 54                                                   
 55         bra     swsusp_copy_loop                  
 56          mov.l  @(PBE_NEXT, r4), r4               
 57                                                   
 58 swsusp_restore_regs:                              
 59         ! BL=0: R7->R0 is bank0                   
 60         mov.l   3f, r8                            
 61         mov.l   4f, r5                            
 62         jsr     @r5                               
 63          nop                                      
 64                                                   
 65         ! BL=1: R7->R0 is bank1                   
 66         lds     k2, pr                            
 67         ldc     k3, ssr                           
 68                                                   
 69         mov.l   @r15+, r0                         
 70         mov.l   @r15+, r1                         
 71         mov.l   @r15+, r2                         
 72         mov.l   @r15+, r3                         
 73         mov.l   @r15+, r4                         
 74         mov.l   @r15+, r5                         
 75         mov.l   @r15+, r6                         
 76         mov.l   @r15+, r7                         
 77                                                   
 78         rte                                       
 79          nop                                      
 80         ! BL=0: R7->R0 is bank0                   
 81                                                   
 82         .align  2                                 
 83 1:      .long   swsusp_arch_regs_cpu0             
 84 2:      .long   restore_pblist                    
 85 3:      .long   0x20000000 ! RB=1                 
 86 4:      .long   restore_regs                      
 87                                                   
 88 ! swsusp_arch_suspend()                           
 89 ! - prepare pc for resume, return from functio    
 90 ! - save registers in swsusp_arch_regs_cpu0       
 91 ! - call swsusp_save write suspend image          
 92                                                   
 93 ENTRY(swsusp_arch_suspend)                        
 94         sts     pr, r0          ! save pr in r    
 95         mov     r15, r2         ! save sp in r    
 96         mov     r8, r5          ! save r8 in r    
 97         stc     sr, r1                            
 98         ldc     r1, ssr         ! save sr in s    
 99         mov.l   1f, r1                            
100         ldc     r1, spc         ! setup pc val    
101         mov.l   5f, r15         ! use swsusp_a    
102         mov.l   6f, r3                            
103         add     r3, r15         ! save from to    
104                                                   
105         ! BL=0: R7->R0 is bank0                   
106         mov.l   2f, r3          ! get new SR v    
107         mov     #0, r4                            
108         mov.l   7f, r1                            
109         jsr     @r1             ! switch to ba    
110          not    r4, r4                            
111                                                   
112         ! BL=1: R7->R0 is bank1                   
113         stc     r2_bank, k0     ! fetch old sp    
114         mov.l   3f, k4          ! SR bits to c    
115         mov.l   8f, k1                            
116         jsr     @k1             ! switch to ba    
117          stc    r0_bank, k3     ! fetch old pr    
118                                                   
119         ! BL=0: R7->R0 is bank0                   
120         mov     r2, r15         ! restore old     
121         mov     r5, r8          ! restore old     
122         stc     ssr, r1                           
123         ldc     r1, sr          ! restore old     
124         lds     r0, pr          ! restore old     
125         mov.l   4f, r0                            
126         jmp     @r0                               
127          nop                                      
128                                                   
129 swsusp_call_save:                                 
130         mov     r2, r15         ! restore old     
131         mov     r5, r8          ! restore old     
132         lds     r0, pr          ! restore old     
133         rts                                       
134          mov    #0, r0                            
135                                                   
136         .align  2                                 
137 1:      .long   swsusp_call_save                  
138 2:      .long   0x20000000 ! RB=1                 
139 3:      .long   0xdfffffff ! RB=0                 
140 4:      .long   swsusp_save                       
141 5:      .long   swsusp_arch_regs_cpu0             
142 6:      .long   SWSUSP_ARCH_REGS_SIZE             
143 7:      .long   save_low_regs                     
144 8:      .long   save_regs                         
                                                      

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