Segment definitions for linux on x86
===

Linux 3.4.6 defines the following macros in arch/x86/include/asm/segment.h. Can anybody explain why the __USER macros add 3 to the defined constant and why this is not done for __KERNEL macros?

    #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)
