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

TOMOYO Linux Cross Reference
Linux/arch/nios2/kernel/head.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/nios2/kernel/head.S (Architecture alpha) and /arch/ppc/kernel/head.S (Architecture ppc)


  1 /*                                                
  2  * Copyright (C) 2009 Wind River Systems Inc      
  3  *   Implemented by fredrik.markstrom@gmail.co    
  4  * Copyright (C) 2004 Microtronix Datacom Ltd     
  5  * Copyright (C) 2001 Vic Phillips, Microtroni    
  6  *                                                
  7  * Based on head.S for Altera's Excalibur deve    
  8  *                                                
  9  * Based on the following from the Excalibur s    
 10  *      NA_MemoryMap.s, NR_JumpToStart.s, NR_S    
 11  *                                                
 12  * This file is subject to the terms and condi    
 13  * License. See the file "COPYING" in the main    
 14  * for more details.                              
 15  */                                               
 16                                                   
 17 #include <linux/init.h>                           
 18 #include <linux/linkage.h>                        
 19 #include <asm/thread_info.h>                      
 20 #include <asm/processor.h>                        
 21 #include <asm/cache.h>                            
 22 #include <asm/page.h>                             
 23 #include <asm/asm-offsets.h>                      
 24 #include <asm/asm-macros.h>                       
 25                                                   
 26 /*                                                
 27  * ZERO_PAGE is a special page that is used fo    
 28  * data and COW.                                  
 29  */                                               
 30 .data                                             
 31 .global empty_zero_page                           
 32 .align 12                                         
 33 empty_zero_page:                                  
 34         .space  PAGE_SIZE                         
 35                                                   
 36 /*                                                
 37  * This global variable is used as an extensio    
 38  * STATUS register to emulate a user/superviso    
 39  */                                               
 40         .data                                     
 41         .align  2                                 
 42         .set noat                                 
 43                                                   
 44         .global _current_thread                   
 45 _current_thread:                                  
 46         .long   0                                 
 47 /*                                                
 48  * Input(s): passed from u-boot                   
 49  *   r4 - Optional pointer to a board informat    
 50  *   r5 - Optional pointer to the physical sta    
 51  *        disk.                                   
 52  *   r6 - Optional pointer to the physical end    
 53  *        disk.                                   
 54  *   r7 - Optional pointer to the physical sta    
 55  *        command-line parameters.                
 56  */                                               
 57                                                   
 58 /*                                                
 59  * First executable code - detected and jumped    
 60  * if the code resides in flash (looks for "Ni    
 61  * the potential executable image).               
 62  */                                               
 63         __HEAD                                    
 64 ENTRY(_start)                                     
 65         wrctl   status, r0              /* Dis    
 66                                                   
 67         /* Initialize all cache lines within t    
 68         movia   r1, NIOS2_ICACHE_SIZE             
 69         movui   r2, NIOS2_ICACHE_LINE_SIZE        
 70                                                   
 71 icache_init:                                      
 72         initi   r1                                
 73         sub     r1, r1, r2                        
 74         bgt     r1, r0, icache_init               
 75         br      1f                                
 76                                                   
 77         /*                                        
 78          * This is the default location for th    
 79          * to our handler                         
 80          */                                       
 81 ENTRY(exception_handler_hook)                     
 82         movia   r24, inthandler                   
 83         jmp     r24                               
 84                                                   
 85 ENTRY(fast_handler)                               
 86         nextpc et                                 
 87 helper:                                           
 88         stw     r3, r3save - helper(et)           
 89                                                   
 90         rdctl   r3 , pteaddr                      
 91         srli    r3, r3, 12                        
 92         slli    r3, r3, 2                         
 93         movia   et, pgd_current                   
 94                                                   
 95         ldw     et, 0(et)                         
 96         add     r3, et, r3                        
 97         ldw     et, 0(r3)                         
 98                                                   
 99         rdctl   r3, pteaddr                       
100         andi    r3, r3, 0xfff                     
101         add     et, r3, et                        
102         ldw     et, 0(et)                         
103         wrctl   tlbacc, et                        
104         nextpc  et                                
105 helper2:                                          
106         ldw     r3, r3save - helper2(et)          
107         subi    ea, ea, 4                         
108         eret                                      
109 r3save:                                           
110         .word 0x0                                 
111 ENTRY(fast_handler_end)                           
112                                                   
113 1:                                                
114         /*                                        
115          * After the instruction cache is init    
116          * also be initialized.                   
117          */                                       
118         movia   r1, NIOS2_DCACHE_SIZE             
119         movui   r2, NIOS2_DCACHE_LINE_SIZE        
120                                                   
121 dcache_init:                                      
122         initd   0(r1)                             
123         sub     r1, r1, r2                        
124         bgt     r1, r0, dcache_init               
125                                                   
126         nextpc  r1                      /* Fin    
127 chkadr:                                           
128         movia   r2, chkadr                        
129         beq     r1, r2,finish_move      /* We     
130         addi    r1, r1,(_start - chkadr)          
131         movia   r2, _start              /* Des    
132         movia   r3, __bss_start         /* End    
133                                                   
134 loop_move:                              /* r1:    
135         ldw     r8, 0(r1)               /* loa    
136         stw     r8, 0(r2)               /* sto    
137         flushd  0(r2)                   /* Flu    
138         addi    r1, r1, 4               /* inc    
139         addi    r2, r2, 4               /* inc    
140         blt     r2, r3, loop_move                 
141                                                   
142         movia   r1, finish_move         /* VMA    
143         jmp     r1                      /* jmp    
144                                                   
145 finish_move:                                      
146                                                   
147         /* Mask off all possible interrupts */    
148         wrctl   ienable, r0                       
149                                                   
150         /* Clear .bss */                          
151         movia   r2, __bss_start                   
152         movia   r1, __bss_stop                    
153 1:                                                
154         stb     r0, 0(r2)                         
155         addi    r2, r2, 1                         
156         bne     r1, r2, 1b                        
157                                                   
158         movia   r1, init_thread_union   /* set    
159         addi    sp, r1, THREAD_SIZE               
160         movia   r2, _current_thread     /* Rem    
161         stw     r1, 0(r2)                         
162                                                   
163         movia   r1, nios2_boot_init     /* sav    
164         callr   r1                                
165                                                   
166         movia   r1, start_kernel        /* cal    
167         callr   r1                                
168                                                   
169         /* If we return from start_kernel, bre    
170          * buggered we are.                       
171          */                                       
172         break                                     
173                                                   
174         /* End of startup code */                 
175 .set at                                           
                                                      

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