OSDN Git Service

i386: fix setCx86/getCx86 race in macros
authorWilly Tarreau <w@1wt.eu>
Sun, 10 Feb 2008 21:52:35 +0000 (22:52 +0100)
committerWilly Tarreau <w@1wt.eu>
Sun, 10 Feb 2008 21:54:44 +0000 (22:54 +0100)
commitba89d5a7c93fd275487ab58268ca53cf14b426bd
tree5aeeaf89798c0cb1c63a10ecb9d009e05eef6e97
parent1994e10c56cfb36df0e03090e5c917c973d3df69
i386: fix setCx86/getCx86 race in macros

Because of the way the setCx86 macro is defined, a call to
setCx86(XXXX, getCx86(XXXX)) will produce the wrong output sequence.
This affects at least one place in arch/i386/kernel/setup.c :

/* Enable MMX extensions (App note 108) */
setCx86(CX86_CCR7, getCx86(CX86_CCR7)|1);

A correct solution consists in passing the value argument via a
temporary variable. 2.6 has a different fix using inline functions,
which produce equivalent code though.

Signed-off-by: Willy Tarreau <w@1wt.eu>
include/asm-i386/processor.h