【ARMv8/v9 异常模型入门及渐进 13 -- ARM Linux 系统调用流程分析】

本文介绍了ARMv8/v9系统调用的过程,涉及用户栈到内核栈的转换。当进程因系统调用陷入内核态时,会保存用户栈地址并设置堆栈指针寄存器为内核栈地址。系统调用通过svc指令触发,从user模式切换到svc模式,执行包括保存用户态信息、根据调用号调用相应内核函数等步骤。在ARMv7中,中断向量表定义了svc异常处理,通过链接脚本确定向量地址,最终跳转到内核代码执行。
摘要由CSDN通过智能技术生成


请阅读【ARMv8/v9 ARM64 System Exception】



上篇文章:ARMv8/v9 异常模型入门及渐进 12 – ARM Linux 用户栈和系统栈及 CURRENT宏 介绍

1.1 SYSCALL 过程调用规范

当进程因为中断或者系统调用陷入到内核态时,进程所使用的堆栈也要从用户栈转到内核栈。进程陷入到内核态后:

  • 先把用户态堆栈的地址保存在内核栈之中;
  • 然后设置堆栈指针寄存器的内容为内核栈的地址。

这样就完成了 用户栈内核栈 的转换;当进程从内核态恢复到用户态之后时,在内核态之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公讲 ARM

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值