1 CPU上下文的来由
CPU上下文是切换任务到CPU时需要保存和恢复的CPU寄存器。ARM64需要保存的寄存器如下图所示
X19-X29作为CPU上下文的依据是什么?
实际上这里使用了一个隐含的事实:Linux所有的任务切换都是在内核中__switch_to函数中进行的,当前任务通过__switch_to->cpu_switch_to切换到(next)。任务是固定在cpu_switch_to这个函数中切走,下一次该任务被调度回来时,会从__switch_to(bl cpu_switch_to的后一条指令)中切回来。这个过程相对于__switch_to来讲相当于从cpu_switch_to子函数调用返回,不管调度出去多久,寄存器被修改了多少,从__switch_to层面看就是觉得cpu_switch_to执行的时间变成有点长,只是要求这里只需要cpu_switch_to遵循Armv8的