⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 relocate_kernel.s

📁 linux 内核源代码
💻 S
字号:
/* * relocate_kernel.S - put the kernel image in place to boot */#include <asm/kexec.h>	.globl relocate_new_kernelrelocate_new_kernel:	/* Move boot params back to where the kernel expects them */	ldr	r0,kexec_boot_params_address	teq	r0,#0	beq	8f	ldr	r1,kexec_boot_params_copy	mov	r6,#KEXEC_BOOT_PARAMS_SIZE/47:	ldr	r5,[r1],#4	str	r5,[r0],#4	subs	r6,r6,#1	bne	7b8:	/* Boot params moved, now go on with the kernel */	ldr	r0,kexec_indirection_page	ldr	r1,kexec_start_address0:	/* top, read another word for the indirection page */	ldr	r3, [r0],#4	/* Is it a destination page. Put destination address to r4 */	tst	r3,#1,0	beq	1f	bic	r4,r3,#1	b	0b1:	/* Is it an indirection page */	tst	r3,#2,0	beq	1f	bic	r0,r3,#2	b	0b1:	/* are we done ? */	tst	r3,#4,0	beq	1f	b	2f1:	/* is it source ? */	tst	r3,#8,0	beq	0b	bic r3,r3,#8	mov r6,#10249:	ldr r5,[r3],#4	str r5,[r4],#4	subs r6,r6,#1	bne 9b	b 0b2:	/* Jump to relocated kernel */	mov lr,r1	mov r0,#0	ldr r1,kexec_mach_type	ldr r2,kexec_boot_params_address	mov pc,lr	.globl kexec_start_addresskexec_start_address:	.long	0x0	.globl kexec_indirection_pagekexec_indirection_page:	.long	0x0	.globl kexec_mach_typekexec_mach_type:	.long	0x0	/* phy addr where new kernel will expect to find boot params */	.globl kexec_boot_params_addresskexec_boot_params_address:	.long	0x0	/* phy addr where old kernel put a copy of orig boot params */	.globl kexec_boot_params_copykexec_boot_params_copy:	.long	0x0relocate_new_kernel_end:	.globl relocate_new_kernel_sizerelocate_new_kernel_size:	.long relocate_new_kernel_end - relocate_new_kernel

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -