arm64_context_switch 线程切换过程

/*voidarm64_context_switch(vaddr_t*old_sp,vaddr_tnew_sp);*/FUNCTION(arm64_context_switch)/*saveoldframe*/pushx28,x29pushx26,x27pushx24,x25pushx22,x23...
摘要由CSDN通过智能技术生成

/* void arm64_context_switch(vaddr_t *old_sp, vaddr_t new_sp); */

FUNCTION(arm64_context_switch)

    /* save old frame */

    push x28, x29

    push x26, x27

    push x24, x25

    push x22, x23

    push x20, x21

    push x18, x19

    mrs  x18, tpidr_el0   // move tpidr_el0 into x18

    mrs  x19, tpidrro_el0

    push x18, x19  // save x18 into stack

    push x30, xzr

 

           //--switch stack frame

    /* save old sp */

    mov  x15, sp

    str  x15, [x0]   //   [x0] :first param  ,that is oldthread->arch.sp

                 

    /* load new sp */

    mov  sp, x1    //  x1 :second param  , move  newthread->arch.sp into sp

 

    /* restore new frame */

    pop  x30, xzr

    pop  x18, x19

    msr  tpidr_el0, x18

    msr  tpidrro_el0, x19

    pop  x18, x19

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值