Linux 3.4.6 在 arch/x86/include/asm/segment.h 中定义了以下宏。任何人都可以解释为什么 __USER 宏将 3 添加到定义的常量以及为什么不为 __KERNEL 宏执行此操作?
#define __KERNEL_CS (GDT_ENTRY_KERNEL_CS*8)
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS*8)
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS*8+3)
#define __USER_CS (GDT_ENTRY_DEFAULT_USER_CS*8+3)