Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/m32r/boot/compressed/misc.c
10818 views
1
/*
2
* arch/m32r/boot/compressed/misc.c
3
*
4
* This is a collection of several routines from gzip-1.0.3
5
* adapted for Linux.
6
*
7
* malloc by Hannu Savolainen 1993 and Matthias Urlichs 1994
8
*
9
* Adapted for SH by Stuart Menefy, Aug 1999
10
*
11
* 2003-02-12: Support M32R by Takeo Takahashi
12
*/
13
14
/*
15
* gzip declarations
16
*/
17
#define STATIC static
18
19
#undef memset
20
#undef memcpy
21
#define memzero(s, n) memset ((s), 0, (n))
22
23
static void error(char *m);
24
25
#include "m32r_sio.c"
26
27
static unsigned long free_mem_ptr;
28
static unsigned long free_mem_end_ptr;
29
30
#ifdef CONFIG_KERNEL_BZIP2
31
static void *memset(void *s, int c, size_t n)
32
{
33
char *ss = s;
34
35
while (n--)
36
*ss++ = c;
37
return s;
38
}
39
#endif
40
41
#ifdef CONFIG_KERNEL_GZIP
42
#define BOOT_HEAP_SIZE 0x10000
43
#include "../../../../lib/decompress_inflate.c"
44
#endif
45
46
#ifdef CONFIG_KERNEL_BZIP2
47
#define BOOT_HEAP_SIZE 0x400000
48
#include "../../../../lib/decompress_bunzip2.c"
49
#endif
50
51
#ifdef CONFIG_KERNEL_LZMA
52
#define BOOT_HEAP_SIZE 0x10000
53
#include "../../../../lib/decompress_unlzma.c"
54
#endif
55
56
static void error(char *x)
57
{
58
puts("\n\n");
59
puts(x);
60
puts("\n\n -- System halted");
61
62
while(1); /* Halt */
63
}
64
65
void
66
decompress_kernel(int mmu_on, unsigned char *zimage_data,
67
unsigned int zimage_len, unsigned long heap)
68
{
69
unsigned char *input_data = zimage_data;
70
int input_len = zimage_len;
71
unsigned char *output_data;
72
73
output_data = (unsigned char *)CONFIG_MEMORY_START + 0x2000
74
+ (mmu_on ? 0x80000000 : 0);
75
free_mem_ptr = heap;
76
free_mem_end_ptr = free_mem_ptr + BOOT_HEAP_SIZE;
77
78
puts("\nDecompressing Linux... ");
79
decompress(input_data, input_len, NULL, NULL, output_data, NULL, error);
80
puts("done.\nBooting the kernel.\n");
81
}
82
83