寄存器%gs有什么用?

ikr*_*bbe 5 x86 linux-kernel

我所能找到的关于 %gs 寄存器的信息是,它似乎是一个在 >32 位 x86 架构上免费使用的寄存器。似乎 gs_change 在任何系统调用之前执行。 有人可以向我指出如何使用该寄存器的文档吗?— 我假设它是用于内核/用户模式切换的寄存器。

我的问题的背景是,我试图了解内核堆栈跟踪以及到底发生了什么。

堆栈跟踪是从到达 的刷新过程生成的/proc/sys/kernel/hung_task_timeout_secs

yae*_*shi 4

它似乎%gs是为 x86 Linux 内核上的 GCC 堆栈保护功能保留的CONFIG_CC_STACKPROTECTOR,以便设置堆栈金丝雀您可以在arch/x86/include/asm/stackportector.h中看到一些解释。