linux内存管理 (三) 11 其他架构 内核启动从start到start_kernel过程

arch/ 		从 linux-1.1.45 	开始加入内核,代表开始支持多架构(architecture),之前支持 i386
arch/i386 	从 linux-1.1.45		开始加入内核
arch/mips 	从 linux-1.1.82		开始加入内核
arch/arm 	从 linux-2.1.80 	开始加入内核
arch/arm64  从 linux-3.7-rc1 	开始加入内核
arch/riscv  从 linux-4.15-rc1 	开始加入内核

arch/x86
arch/ia64

现在是 (2020-8-8 16:44:47),linux-5.8,arch/ 目录下有 25个 架构相关目录
	 alpha arc arm arm64 c6x csky h8300 hexagon ia64 m68k microblaze mips nds32 nios2 openrisc parisc powerpc riscv s390 sh sparc um unicore32 x86 xtensa



  • arch/arm64
linux-3.7-rc1 
	arm64的非压缩内核启动流程
		基本上和 linux-3.0.1 arm的一样
	arm64的压缩内核启动流程
		没有压缩内核
linux-5.8
	arm64的非压缩内核启动流程 // 流程基本一样,但是关键符号都变了
		从 _head: 到 b	primary_entry
		从 primary_entry 到 b	__primary_switch
		从 __primary_switch 到 __primary_switched
		从 __primary_switched 到 b	start_kernel
		
	arm64的压缩内核启动流程
		没有压缩内核
  • arch/riscv
linux-4.15-rc1
	riscv的非压缩内核启动流程
		ENTRY(_start)
			call setup_vm  //(建立临时页表)
			call relocate  // (通过 csrw sptbr, a0 开启MMU)
			la sp, init_thread_union;li a0, ASM_THREAD_SIZE;add sp, sp, a0 //(设置栈)
			tail start_kernel  // (调用start_kernel)
	riscv的压缩内核启动流程
		没有压缩内核
linux-5.8
	riscv的非压缩内核启动流程
		从 ENTRY(_start) 到 j _start_kernel
		_start_kernel
			call setup_vm
			call relocate
			la sp, init_thread_union + THREAD_SIZE
			tail start_kernel
	riscv的压缩内核启动流程
		没有压缩内核
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值