Определения сегментов для Linux на платформе x86

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)
5
задан Alexey Frunze 31 July 2012 в 08:38
поделиться