首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux内核设置GDT的地方

Linux内核设置GDT的地方
EN

Stack Overflow用户
提问于 2016-07-26 09:44:50
回答 1查看 1.3K关注 0票数 9

我正在阅读Linux内核代码。我对Linux中的GDT(全局描述符表)有一些疑问。

我的问题是:

代码语言:javascript
复制
Where Linux Kernel Setup Large GDT?
I know that in pm.c [http://lxr.free-electrons.com/source/arch/x86/boot/pm.c#L123] 
kernel call function setup_gdt() and it set up a small GDT with only three entries. 

Then jumps to protected mode code.
Then where is the code to setup large GDT with 32 entries 

( One specified in Understanding Linux Kernel  https://books.google.co.in/books?id=h0lltXyJ8aIC&pg=PT59&lpg=PT59&dq=linux+kernel+file+gdt&source=bl&ots=gO0lH05fHX&sig=h4X1I6TP_P7JlEwzoCkQk3uztjw&hl=en&sa=X&ei=XFwPVM-WBbOBsQTtiIDIDw&redir_esc=y#v=onepage&q=linux%20kernel%20file%20gdt&f=false  )

Kernel also defined constants for Large GDT set up in segment.h http://lxr.free-electrons.com/source/arch/x86/include/asm/segment.h#L46.

为什么内核使用两个步骤来设置GDT?

如果我们使用GRUB作为引导加载程序,GRUB也会在grub/kern/i 386/realmode.S中设置一个GDT。

EN

回答 1

Stack Overflow用户

发布于 2020-06-09 12:47:59

主GDT的布局似乎在第91项。中的arch/x86/include/asm/secment.h中定义。

第123项。中,初始化似乎位于arch/x86/内核/cpu/Common.c中。

但我可能错了。也不知道为什么内核使用两个步骤来设置GDT。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38586417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档