arch/arm/boot/compressed/head.S
#ifdef CONFIG_AUTO_ZRELADDR
/*
* Find the start of physical memory...现在我们知道内核可以解压缩到压缩镜像下方的内存中,并且它们在解压缩过程中不会发生重叠,现在可以开始执行wont_overwrite 处的代码了。...arch/arm/boot/compressed/head.S
wont_overwrite:
/*
* If delta is zero, we are running at the address...do_decompress(u8 *input, int len, u8 *output, void (*error)(char *x))
{
return __decompress(input, len, NULL..., NULL, output, 0, NULL, error);
}
这是在 C 中实现的,解压类型因 Kconfig 选项而异:与编译内核时选择的解压器将链接到映像并从物理内存执行。