Privilege Level
In all three cases, only privileged applications (usually the OS kernel) may modify IF. Note that this only applies to protected mode code (real mode code may always modify IF).
CLI and STI are privileged instructions, which trigger a general protection fault if an unprivileged application attempts to execute it, while POPF will simply not modify the IF flag if the application is unprivileged.
The privilege level required to execute a CLI or STI instruction, or set IF using POPF, is not determined by the IOPL (I/O Privilege Level) in EFLAGS. If the IOPL is set to 2 for example, any program running only in ring 0 can execute a CLI. Most modern operating systems set the IOPL to be 0 so only the kernel can execute CLI/STI. The reason for this is that since clearing IF will force the processor to ignore ALL interrupts, the kernel may never get control back if it is not set to 1 again.
Read more about this topic: Interrupt Flag
Famous quotes containing the words privilege and/or level:
“There is the falsely mystical view of art that assumes a kind of supernatural inspiration, a possession by universal forces unrelated to questions of power and privilege or the artists relation to bread and blood. In this view, the channel of art can only become clogged and misdirected by the artists concern with merely temporary and local disturbances. The song is higher than the struggle.”
—Adrienne Rich (b. 1929)
“For him nor deep nor hill there is,
But alls one level plain he hunts for flowers.”
—Unknown. The Thousand and One Nights.
AWP. Anthology of World Poetry, An. Mark Van Doren, ed. (Rev. and enl. Ed., 1936)