OvmfPkg/XenBusDxe: Add TestAndClearBit.
This atomically test's and clear's a bit. Change in V3: - adding IA32 support. (not yet reviewed) both XenBusDxe/Ia32/TestAndClearBit.{S,asm} are new Change in V2: - Adding .asm version - Comment the function Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Anthony PERARD <anthony.perard@citrix.com> Reviewed-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@16266 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
12
OvmfPkg/XenBusDxe/X64/TestAndClearBit.S
Normal file
12
OvmfPkg/XenBusDxe/X64/TestAndClearBit.S
Normal file
@@ -0,0 +1,12 @@
|
||||
# INT32
|
||||
# EFIAPI
|
||||
# TestAndClearBit (
|
||||
# IN INT32 Bit, // rcx
|
||||
# IN volatile VOID* Address // rdx
|
||||
# );
|
||||
ASM_GLOBAL ASM_PFX(TestAndClearBit)
|
||||
ASM_PFX(TestAndClearBit):
|
||||
lock
|
||||
btrl %ecx, (%rdx)
|
||||
sbbl %eax, %eax
|
||||
ret
|
16
OvmfPkg/XenBusDxe/X64/TestAndClearBit.asm
Normal file
16
OvmfPkg/XenBusDxe/X64/TestAndClearBit.asm
Normal file
@@ -0,0 +1,16 @@
|
||||
.code
|
||||
|
||||
; INT32
|
||||
; EFIAPI
|
||||
; TestAndClearBit (
|
||||
; IN INT32 Bit, // rcx
|
||||
; IN volatile VOID* Address // rdx
|
||||
; );
|
||||
TestAndClearBit PROC
|
||||
lock
|
||||
btr [rdx], ecx
|
||||
sbb eax, eax
|
||||
ret
|
||||
TestAndClearBit ENDP
|
||||
|
||||
END
|
Reference in New Issue
Block a user