Encontré esto en internet:
"Contrary to what most developers believe (even
kernel-mode developers) there is no mode of the x86 CPU called
"Kernel-mode". Other CPUs such as the Motorola 68000 has two processor
modes "built into" the CPU, i.e. it has a flag in a status register that
tells the CPU if it is currently executing in user-mode or
supervisor-mode. Intel x86 CPUs do not have such a flag. Instead, it is
the privilege level of the code segment that is currently
executing that determines the privilege level of the executing program.
Each code segment in an application that runs in protected mode on an
x86 CPU is described by an 8 byte data structure called a Segment
Descriptor. A segment descriptor contains (among other information) the
start address of the code segment that is described by the descriptor,
the length of the code segment and the privilege level that the code in
the code segment will execute at. Code that executes in a code segment
with a privilege level of 3 is said to run in user mode and code that
executes in a code segment with a privilege level of 0 is said to
execute in kernel mode. In other words, kernel-mode (privilege level 0)
and user-mode (privilege level 3) are attributes of the code and not of
the CPU."
(fuente: http://www.codeguru.com/cpp/w-p/system/devicedriverdevelopment/article.php/c8035/How-Do-Windows-NT-System-Calls-REALLY-Work.htm)
Basicamente dice que no existe un bit que el hardware o el sistema operativo cambie para cambiar entre modos usuario y monitor.