/* * Emulate 'cmpxchg8b (%esi)' on UP * * Inputs: * %esi : memory location to compare * %eax : low 32 bits of old value * %edx : high 32 bits of old value * %ebx : low 32 bits of new value * %ecx : high 32 bits of new value
*/
SYM_FUNC_START(cmpxchg8b_emu)
pushfl
cli
cmpl (%esi), %eax
jne .Lnot_same
cmpl 4(%esi), %edx
jne .Lnot_same
/* * Emulate 'cmpxchg8b %fs:(%rsi)' * * Inputs: * %esi : memory location to compare * %eax : low 32 bits of old value * %edx : high 32 bits of old value * %ebx : low 32 bits of new value * %ecx : high 32 bits of new value * * Notably this is not LOCK prefixed and is not safe against NMIs
*/
SYM_FUNC_START(this_cpu_cmpxchg8b_emu)
pushfl
cli
cmpl __percpu (%esi), %eax
jne .Lnot_same2
cmpl __percpu 4(%esi), %edx
jne .Lnot_same2
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.