Zircon 初始化过程

本文详细追溯了Zircon操作系统的启动流程,从image.ld的ENTRY(IMAGE_ELF_ENTRY)开始,经过kernel/arch在不同平台的入口_start,直至C语言入口和bootstrap2阶段。在userboot_init的hook函数之后,kernel初始化接近尾声,即将启动创建user process的过程。
摘要由CSDN通过智能技术生成

本文及后续通过interface调用来trace Zircon启动流程,而不是局限在某个具体部分讲解。

image.ld 

ENTRY(IMAGE_ELF_ENTRY)

kernel/arch/arm64/start.S:323:IMAGE_ELF_ENTRY = _start

kernel/arch/x86/start.S:241:IMAGE_ELF_ENTRY = _start

.text
FUNCTION(_start)
    /* Save the Boot info for the primary CPU only */
    mrs     cpuid, mpidr_el1
    ubfx    cpuid, cpuid, #0, #15 /* mask Aff0 and Aff1 fields */
    cbnz    cpuid, .Lno_save_bootinfo
    /* save x0 in zbi_paddr */
    adrp    tmp, zbi_paddr
。。。
    // Choose a good (ideally random) stack-guard value as early as possible.
    bl      choose_stack_guard
    mrs     tmp, tpidr_el1
    str     x0, [tmp, #ZX_TLS_STACK_GUARD_OFFSET]
    // Don't leak the value to oth
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值