summaryrefslogtreecommitdiff
path: root/DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm
diff options
context:
space:
mode:
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2008-04-17 05:48:13 +0000
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>2008-04-17 05:48:13 +0000
commitc69dd9dfad3eb97d5e21f520f3ba35d102ec4cfa (patch)
treee6065a748931519b3cf11d9811c0beef9c80d58e /DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm
parentfcf03596d10de53e45292bd9eb4767a8ddc344ed (diff)
downloadedk2-platforms-c69dd9dfad3eb97d5e21f520f3ba35d102ec4cfa.tar.xz
Porting Duet module from EDKI to EDKII
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@5076 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm')
-rw-r--r--DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm111
1 files changed, 111 insertions, 0 deletions
diff --git a/DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm b/DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm
new file mode 100644
index 0000000000..fa71762877
--- /dev/null
+++ b/DuetPkg/CpuIoDxe/x64/CpuIoAccess.asm
@@ -0,0 +1,111 @@
+ title CpuIoAccess.asm
+
+;------------------------------------------------------------------------------
+;*
+;* Copyright (c) 2005 - 2007, Intel Corporation
+;* All rights reserved. This program and the accompanying materials
+;* are licensed and made available under the terms and conditions of the BSD License
+;* which accompanies this distribution. The full text of the license may be found at
+;* http://opensource.org/licenses/bsd-license.php
+;*
+;* THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+;* WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+;*
+;* Module Name:
+;* CpuIoAccess.asm
+;*
+;* Abstract:
+;* Supports x64 CPU IO operation
+;*
+;------------------------------------------------------------------------------
+;
+;
+;
+; Abstract:
+;
+;
+;------------------------------------------------------------------------------
+
+.CODE
+
+;------------------------------------------------------------------------------
+; UINT8
+; CpuIoRead8 (
+; UINT16 Port // rcx
+; )
+;------------------------------------------------------------------------------
+CpuIoRead8 PROC PUBLIC
+ xor eax, eax
+ mov dx, cx
+ in al, dx
+ ret
+CpuIoRead8 ENDP
+
+;------------------------------------------------------------------------------
+; VOID
+; CpuIoWrite8 (
+; UINT16 Port, // rcx
+; UINT32 Data // rdx
+; )
+;------------------------------------------------------------------------------
+CpuIoWrite8 PROC PUBLIC
+ mov eax, edx
+ mov dx, cx
+ out dx, al
+ ret
+CpuIoWrite8 ENDP
+
+;------------------------------------------------------------------------------
+; UINT16
+; CpuIoRead16 (
+; UINT16 Port // rcx
+; )
+;------------------------------------------------------------------------------
+CpuIoRead16 PROC PUBLIC
+ xor eax, eax
+ mov dx, cx
+ in ax, dx
+ ret
+CpuIoRead16 ENDP
+
+;------------------------------------------------------------------------------
+; VOID
+; CpuIoWrite16 (
+; UINT16 Port, // rcx
+; UINT32 Data // rdx
+; )
+;------------------------------------------------------------------------------
+CpuIoWrite16 PROC PUBLIC
+ mov eax, edx
+ mov dx, cx
+ out dx, ax
+ ret
+CpuIoWrite16 ENDP
+
+;------------------------------------------------------------------------------
+; UINT32
+; CpuIoRead32 (
+; UINT16 Port // rcx
+; )
+;------------------------------------------------------------------------------
+CpuIoRead32 PROC PUBLIC
+ mov dx, cx
+ in eax, dx
+ ret
+CpuIoRead32 ENDP
+
+;------------------------------------------------------------------------------
+; VOID
+; CpuIoWrite32 (
+; UINT16 Port, // rcx
+; UINT32 Data // rdx
+; )
+;------------------------------------------------------------------------------
+CpuIoWrite32 PROC PUBLIC
+ mov eax, edx
+ mov dx, cx
+ out dx, eax
+ ret
+CpuIoWrite32 ENDP
+
+END