Messages in this thread | | | Date | Tue, 5 Jul 2011 14:47:42 +0400 | From | Cyrill Gorcunov <> | Subject | [Q x86-64] on kernel_eflags |
| |
While were looking into ret_from_fork code I somehow wondered about the global kernel_eflags variable here.
arch/x86/cpu/common.c --------------------- unsigned long kernel_eflags;
void __cpuinit cpu_init(void) { ... raw_local_save_flags(kernel_eflags); }
arch/x86/kernel/entry_64.S -------------------------- ENTRY(ret_from_fork) DEFAULT_FRAME LOCK ; btr $TIF_FORK,TI_flags(%r8) pushq_cfi kernel_eflags(%rip) popfq_cfi # reset kernel eflags
Every call to cpu_init renew global kernel_eflags and every task switching does use this variable in a sake of cleaning carry bit of flags register as far as I can tell.
Should not every cpu has own copy of kernel_eflags? Just to be consistent in style? Or this would be space waisting and an optimization is done here?
Cyrill
| |