https://mp.weixin.qq.com/s/cw5F3tIEdn5dx64XzCmo7Q

 

简单介绍smp_processor_id相关的内容。

riscv - kernel - smp_processor_id

 

本文目录:

1. secondary processors开始执行

2. smp_processor_id()

3. current_thread_info()->cpu何时赋值

4. __cpu_up_task_pointer

5. smp_callin

 

以下正文:

1. secondary processors开始执行

 

在head.S中定义的启动流程中,落选的cpu跳转到.Lsecondary_start处执行:

riscv - kernel - smp_processor_id

 

.Lsecondary_start的定义如下:

riscv - kernel - smp_processor_id

其中:

a. 把.Lsecondary_park的地址,写入到mtvec寄存器,作为异常处理的基地址;

b. a0中存放的是hartid:

riscv - kernel - smp_processor_id

将其作为偏移量,计算出相应核心对应的__cpu_up_stack_pointer和__cpu_up_task_pointer的地址;

c. 判断相应地址是否为0,如果是0,则表示还没有准备好让该核心启动;

d. 如果已经准备好,则跳转到secondary_start_common执行:

-----------------------------------------------------------------------------
这是一篇付费文章,请移步付费阅读全文,谢谢!
文章链接:https://mp.weixin.qq.com/s/cw5F3tIEdn5dx64XzCmo7Q

相关文章:

  • 2022-12-23
  • 2021-12-03
  • 2021-10-12
  • 2021-07-29
  • 2022-12-23
  • 2022-12-23
  • 2021-10-15
  • 2021-07-27
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-24
  • 2022-12-23
相关资源
相似解决方案