Hi,
These are the definitions of __KERNEL_DS and __USER_DS:
#define __KERNEL_DS (GDT_ENTRY_KERNEL_DS * 8)
#define __USER_DS (GDT_ENTRY_DEFAULT_USER_DS* 8 + 3)
The difference is firstly in the privilege level ("+ 3"). There also
is a comment in the same file (arch/x86/include/asm/segment.h):
/*
* we cannot use the same code segment descriptor for user and kernel
* -- not even in the long flat mode, because of different DPL /kkeil
* The segment offset needs to contain a RPL. Grr. -AK
* GDT layout to get 64bit syscall right (sysret hardcodes gdt offsets)
*/
2010/6/8 rahul dev <[email protected]>:
> Hi Joel,
>
> <snip>
>
>> since Linux doesn't use segmentation , all the segment descriptor values >
>> are the same. So I think it doesn't matter what selector value you load > in
>> DS, ES etc. Though I don't know the real reason for why __USER_DS is > used
>> instead of __KERNEL_DS
>
> Although, linux doesn't use segmentation, but I believe the DPL values are
> different for user and kernel data segment descriptor. Please correct me if I
> am wrong.
>
> thanks,
> rahul
>
>
>
>
> --
> To unsubscribe from this list: send an email with
> "unsubscribe kernelnewbies" to [email protected]
> Please read the FAQ at http://kernelnewbies.org/FAQ
>
>
--
Alexander Potashev
--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to [email protected]
Please read the FAQ at http://kernelnewbies.org/FAQ