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

TOMOYO Linux Cross Reference
Linux/arch/arm/boot/compressed/misc.c

Version: ~ [ linux-6.11.5 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.58 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.114 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.169 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.228 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.284 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.322 ] ~ [ 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/arm/boot/compressed/misc.c (Architecture m68k) and /arch/sparc64/boot/compressed/misc.c (Architecture sparc64)


  1 // SPDX-License-Identifier: GPL-2.0                 1 
  2 /*                                                
  3  * misc.c                                         
  4  *                                                
  5  * This is a collection of several routines fr    
  6  * adapted for Linux.                             
  7  *                                                
  8  * malloc by Hannu Savolainen 1993 and Matthia    
  9  *                                                
 10  * Modified for ARM Linux by Russell King         
 11  *                                                
 12  * Nicolas Pitre <nico@visuaide.com>  1999/04/    
 13  *  For this code to run directly from Flash,     
 14  *  be marked with 'const' and all other varia    
 15  *  only.  This way all non constant variables    
 16  *  which should point to addresses in RAM and    
 17  *  This allows for a much quicker boot time.     
 18  */                                               
 19                                                   
 20 unsigned int __machine_arch_type;                 
 21                                                   
 22 #include <linux/compiler.h>     /* for inline     
 23 #include <linux/types.h>                          
 24 #include <linux/linkage.h>                        
 25 #include "misc.h"                                 
 26 #ifdef CONFIG_ARCH_EP93XX                         
 27 #include "misc-ep93xx.h"                          
 28 #endif                                            
 29                                                   
 30 static void putstr(const char *ptr);              
 31                                                   
 32 #include CONFIG_UNCOMPRESS_INCLUDE                
 33                                                   
 34 #ifdef CONFIG_DEBUG_ICEDCC                        
 35                                                   
 36 #if defined(CONFIG_CPU_V6) || defined(CONFIG_C    
 37                                                   
 38 static void icedcc_putc(int ch)                   
 39 {                                                 
 40         int status, i = 0x4000000;                
 41                                                   
 42         do {                                      
 43                 if (--i < 0)                      
 44                         return;                   
 45                                                   
 46                 asm volatile ("mrc p14, 0, %0,    
 47         } while (status & (1 << 29));             
 48                                                   
 49         asm("mcr p14, 0, %0, c0, c5, 0" : : "r    
 50 }                                                 
 51                                                   
 52                                                   
 53 #elif defined(CONFIG_CPU_XSCALE)                  
 54                                                   
 55 static void icedcc_putc(int ch)                   
 56 {                                                 
 57         int status, i = 0x4000000;                
 58                                                   
 59         do {                                      
 60                 if (--i < 0)                      
 61                         return;                   
 62                                                   
 63                 asm volatile ("mrc p14, 0, %0,    
 64         } while (status & (1 << 28));             
 65                                                   
 66         asm("mcr p14, 0, %0, c8, c0, 0" : : "r    
 67 }                                                 
 68                                                   
 69 #else                                             
 70                                                   
 71 static void icedcc_putc(int ch)                   
 72 {                                                 
 73         int status, i = 0x4000000;                
 74                                                   
 75         do {                                      
 76                 if (--i < 0)                      
 77                         return;                   
 78                                                   
 79                 asm volatile ("mrc p14, 0, %0,    
 80         } while (status & 2);                     
 81                                                   
 82         asm("mcr p14, 0, %0, c1, c0, 0" : : "r    
 83 }                                                 
 84                                                   
 85 #endif                                            
 86                                                   
 87 #define putc(ch)        icedcc_putc(ch)           
 88 #endif                                            
 89                                                   
 90 static void putstr(const char *ptr)               
 91 {                                                 
 92         char c;                                   
 93                                                   
 94         while ((c = *ptr++) != '\0') {            
 95                 if (c == '\n')                    
 96                         putc('\r');               
 97                 putc(c);                          
 98         }                                         
 99                                                   
100         flush();                                  
101 }                                                 
102                                                   
103 /*                                                
104  * gzip declarations                              
105  */                                               
106 unsigned char *output_data;                       
107                                                   
108 unsigned long free_mem_ptr;                       
109 unsigned long free_mem_end_ptr;                   
110                                                   
111 #ifndef arch_error                                
112 #define arch_error(x)                             
113 #endif                                            
114                                                   
115 void error(char *x)                               
116 {                                                 
117         arch_error(x);                            
118                                                   
119         putstr("\n\n");                           
120         putstr(x);                                
121         putstr("\n\n -- System halted");          
122                                                   
123         while(1);       /* Halt */                
124 }                                                 
125                                                   
126 asmlinkage void __div0(void)                      
127 {                                                 
128         error("Attempting division by 0!");       
129 }                                                 
130                                                   
131 void                                              
132 decompress_kernel(unsigned long output_start,     
133                 unsigned long free_mem_ptr_end    
134                 int arch_id)                      
135 {                                                 
136         int ret;                                  
137                                                   
138         output_data             = (unsigned ch    
139         free_mem_ptr            = free_mem_ptr    
140         free_mem_end_ptr        = free_mem_ptr    
141         __machine_arch_type     = arch_id;        
142                                                   
143 #ifdef CONFIG_ARCH_EP93XX                         
144         ep93xx_decomp_setup();                    
145 #endif                                            
146         arch_decomp_setup();                      
147                                                   
148         putstr("Uncompressing Linux...");         
149         ret = do_decompress(input_data, input_    
150                             output_data, error    
151         if (ret)                                  
152                 error("decompressor returned a    
153         else                                      
154                 putstr(" done, booting the ker    
155 }                                                 
156                                                   
157 void __fortify_panic(const u8 reason, size_t a    
158 {                                                 
159         error("detected buffer overflow");        
160 }                                                 
161                                                   

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