Contributors: 18
Author |
Tokens |
Token Proportion |
Commits |
Commit Proportion |
Russell King |
117 |
27.53% |
6 |
18.75% |
Linus Torvalds (pre-git) |
87 |
20.47% |
6 |
18.75% |
Ben Dooks |
53 |
12.47% |
2 |
6.25% |
Albin Tonnerre |
39 |
9.18% |
1 |
3.12% |
Tony Lindgren |
31 |
7.29% |
2 |
6.25% |
Nico Pitre |
22 |
5.18% |
3 |
9.38% |
Jinbum Park |
15 |
3.53% |
1 |
3.12% |
Arnd Bergmann |
11 |
2.59% |
1 |
3.12% |
Jean-Christophe Plagniol-Villard |
10 |
2.35% |
1 |
3.12% |
Linus Torvalds |
8 |
1.88% |
1 |
3.12% |
Uwe Zeisberger |
8 |
1.88% |
1 |
3.12% |
Rusty Russell |
7 |
1.65% |
1 |
3.12% |
Bart Van Assche |
5 |
1.18% |
1 |
3.12% |
Stephen Boyd |
5 |
1.18% |
1 |
3.12% |
Al Viro |
3 |
0.71% |
1 |
3.12% |
Thomas Petazzoni |
2 |
0.47% |
1 |
3.12% |
Shawn Guo |
1 |
0.24% |
1 |
3.12% |
Greg Kroah-Hartman |
1 |
0.24% |
1 |
3.12% |
Total |
425 |
|
32 |
|
// SPDX-License-Identifier: GPL-2.0
/*
* misc.c
*
* This is a collection of several routines from gzip-1.0.3
* adapted for Linux.
*
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
*
* Modified for ARM Linux by Russell King
*
* Nicolas Pitre <nico@visuaide.com> 1999/04/14 :
* For this code to run directly from Flash, all constant variables must
* be marked with 'const' and all other variables initialized at run-time
* only. This way all non constant variables will end up in the bss segment,
* which should point to addresses in RAM and cleared to 0 on start.
* This allows for a much quicker boot time.
*/
unsigned int __machine_arch_type;
#include <linux/compiler.h> /* for inline */
#include <linux/types.h>
#include <linux/linkage.h>
#include "misc.h"
#ifdef CONFIG_ARCH_EP93XX
#include "misc-ep93xx.h"
#endif
static void putstr(const char *ptr);
#include CONFIG_UNCOMPRESS_INCLUDE
#ifdef CONFIG_DEBUG_ICEDCC
#if defined(CONFIG_CPU_V6) || defined(CONFIG_CPU_V6K) || defined(CONFIG_CPU_V7)
static void icedcc_putc(int ch)
{
int status, i = 0x4000000;
do {
if (--i < 0)
return;
asm volatile ("mrc p14, 0, %0, c0, c1, 0" : "=r" (status));
} while (status & (1 << 29));
asm("mcr p14, 0, %0, c0, c5, 0" : : "r" (ch));
}
#elif defined(CONFIG_CPU_XSCALE)
static void icedcc_putc(int ch)
{
int status, i = 0x4000000;
do {
if (--i < 0)
return;
asm volatile ("mrc p14, 0, %0, c14, c0, 0" : "=r" (status));
} while (status & (1 << 28));
asm("mcr p14, 0, %0, c8, c0, 0" : : "r" (ch));
}
#else
static void icedcc_putc(int ch)
{
int status, i = 0x4000000;
do {
if (--i < 0)
return;
asm volatile ("mrc p14, 0, %0, c0, c0, 0" : "=r" (status));
} while (status & 2);
asm("mcr p14, 0, %0, c1, c0, 0" : : "r" (ch));
}
#endif
#define putc(ch) icedcc_putc(ch)
#endif
static void putstr(const char *ptr)
{
char c;
while ((c = *ptr++) != '\0') {
if (c == '\n')
putc('\r');
putc(c);
}
flush();
}
/*
* gzip declarations
*/
unsigned char *output_data;
unsigned long free_mem_ptr;
unsigned long free_mem_end_ptr;
#ifndef arch_error
#define arch_error(x)
#endif
void error(char *x)
{
arch_error(x);
putstr("\n\n");
putstr(x);
putstr("\n\n -- System halted");
while(1); /* Halt */
}
asmlinkage void __div0(void)
{
error("Attempting division by 0!");
}
void
decompress_kernel(unsigned long output_start, unsigned long free_mem_ptr_p,
unsigned long free_mem_ptr_end_p,
int arch_id)
{
int ret;
output_data = (unsigned char *)output_start;
free_mem_ptr = free_mem_ptr_p;
free_mem_end_ptr = free_mem_ptr_end_p;
__machine_arch_type = arch_id;
#ifdef CONFIG_ARCH_EP93XX
ep93xx_decomp_setup();
#endif
arch_decomp_setup();
putstr("Uncompressing Linux...");
ret = do_decompress(input_data, input_data_end - input_data,
output_data, error);
if (ret)
error("decompressor returned an error");
else
putstr(" done, booting the kernel.\n");
}
void fortify_panic(const char *name)
{
error("detected buffer overflow");
}