x86-32: Start out eflags and cr4 clean
authorH. Peter Anvin <hpa@linux.intel.com>
Mon, 24 Sep 2012 23:05:48 +0000 (16:05 -0700)
committerH. Peter Anvin <hpa@linux.intel.com>
Wed, 26 Sep 2012 22:06:22 +0000 (15:06 -0700)
commit5a5a51db78ef24aa61a4cb2ae36f07f6fa37356d
tree22b37361c0d876beeea542f769fdb76444878b36
parente139e95590dfebab81841bf7a3ac46500f51a47c
x86-32: Start out eflags and cr4 clean

%cr4 is supposed to reflect a set of features into which the operating
system is opting in.  If the BIOS or bootloader leaks bits here, this
is not desirable.  Consider a bootloader passing in %cr4.pae set to a
legacy paging kernel, for example -- it will not have any immediate
effect, but the kernel would crash when turning paging on.

A similar argument applies to %eflags, and since we have to look for
%eflags.id being settable we can use a sequence which clears %eflags
as a side effect.

Note that we already do this for x86-64.

Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Link: http://lkml.kernel.org/r/1348529239-17943-1-git-send-email-hpa@linux.intel.com
arch/x86/kernel/head_32.S