I read this article: http://static.patater.com/gbaguy/day3pc.htm
It includes the sentence
DON\'T EVER CHANGE CS!!
But wh
In protected mode and long mode (i.e. not 16-bit mode), segment registers including CS are no longer just an extra 4 bits of address. They index into the table of segment descriptors, with a base + limit (normal base=0 limit=4GiB, i.e. a flat memory model), but also with other attributes.
The code segment descriptor determines the CPU mode (e.g. 32-bit compat mode vs. 64-bit long mode). On a 64-bit kernel, a 64-bit user-space process could make a far jmp to some 32-bit code. This is not useful in practice, and may even break when the OS returns to your process after a context switch.
TODO: dig up a link where someone showed how to do this. I think there was even a recent question about this with a detailed answer about how to even find the right segment numbers.