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:
Anthony PERARD
2014-10-29 06:50:35 +00:00
committed by jljusten
parent f1259bba36
commit 6342f1fea8
6 changed files with 81 additions and 0 deletions

View 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

View 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