linux-kernel - ARM架构中不同处理器模式下如何使用内核堆栈?

标签 linux-kernel arm linux-device-driver

据我了解,每个进程都有一个用户堆栈和内核堆栈。除此之外,ARM 架构中的每种模式都有一个堆栈。所以我想知道不同的堆栈和堆栈指针在 ARM 模式下如何工作?另外,何时会使用与进程关联的内核堆栈?

最佳答案

... when this kernel stack associated with the process will be used ?

当您进行系统调用时。就像你想获取接口(interface)的 IP 地址一样,内核就像任何其他应用程序一样需要一些堆栈来准备你想要的东西。所以当你切换到系统调用的内核端时,它有一个相应的堆栈。

How different stack and stack pointer works in ARM modes?

ARM 定义了几种硬件模式来处理系统的不同输入。例如,您可能会突然执行非法指令(或未定义的指令)。在这种情况下,CPU 中的执行会进入不同的模式,并且需要被告知如何继续。由于大多数时候您需要一些堆栈空间才能优雅地处理此问题,因此您需要为此模式提供单独的堆栈。 ARM 为您提供了不同的堆栈寄存器,因此当您切换到不同的硬件模式时,您不会覆盖以前模式的堆栈指针。

关于linux-kernel - ARM架构中不同处理器模式下如何使用内核堆栈?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22601165/

相关文章:

c - Linux驱动程序中的结构文件

linux-kernel - sysfs 导出设备属性

linux-kernel - Linux内核中ARM寄存器r9

android Opencv 基于 Float 而不是 Double

ios - 是否有同时支持armv7和arm64的GoogleAnalyticsServicesIOS sdk?

c++ - ARM C++ newlibnano : Pure virtual function causes linker error

c - 内核互斥与 wait_event_interruptible_exclusive

c - 回显值到 Linux 控制台

linux - 有没有办法检查磁盘页面缓存中存在多少文件?

linux - 文件对象是每个进程的本地对象还是系统范围的?