UefiCpuPkg CpuDxe: Add nasm source file in CpuDxe.inf

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Liming Gao <liming.gao@intel.com>
diff --git a/UefiCpuPkg/CpuDxe/CpuDxe.inf b/UefiCpuPkg/CpuDxe/CpuDxe.inf
index 9db5303..bdff548 100644
--- a/UefiCpuPkg/CpuDxe/CpuDxe.inf
+++ b/UefiCpuPkg/CpuDxe/CpuDxe.inf
@@ -1,7 +1,7 @@
 ## @file

 #  Simple CPU driver installs CPU Architecture Protocol.

 #

-#  Copyright (c) 2008 - 2015, Intel Corporation. All rights reserved.<BR>

+#  Copyright (c) 2008 - 2016, Intel Corporation. All rights reserved.<BR>

 #  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

@@ -56,20 +56,18 @@
   CpuMp.h

 

 [Sources.IA32]

-  Ia32/CpuAsm.asm | MSFT

-  Ia32/CpuAsm.asm | INTEL

-  Ia32/CpuAsm.S   | GCC

-  Ia32/MpAsm.asm  | MSFT

-  Ia32/MpAsm.asm  | INTEL

-  Ia32/MpAsm.nasm | GCC

+  Ia32/CpuAsm.asm

+  Ia32/CpuAsm.nasm

+  Ia32/CpuAsm.S

+  Ia32/MpAsm.asm

+  Ia32/MpAsm.nasm

 

 [Sources.X64]

-  X64/CpuAsm.asm | MSFT

-  X64/CpuAsm.asm | INTEL

-  X64/CpuAsm.S   | GCC

-  X64/MpAsm.asm  | MSFT

-  X64/MpAsm.asm  | INTEL

-  X64/MpAsm.nasm | GCC

+  X64/CpuAsm.asm

+  X64/CpuAsm.nasm

+  X64/CpuAsm.S

+  X64/MpAsm.asm

+  X64/MpAsm.nasm

 

 [Protocols]

   gEfiCpuArchProtocolGuid                       ## PRODUCES

diff --git a/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm
new file mode 100644
index 0000000..77ecfb3
--- /dev/null
+++ b/UefiCpuPkg/CpuDxe/X64/CpuAsm.nasm
@@ -0,0 +1,52 @@
+;------------------------------------------------------------------------------

+;*

+;*   Copyright (c) 2016, Intel Corporation. All rights reserved.<BR>

+;*   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.

+;*

+;*    CpuAsm.nasm

+;*

+;*   Abstract:

+;*

+;------------------------------------------------------------------------------

+

+    DEFAULT REL

+    SECTION .text

+

+;------------------------------------------------------------------------------

+; VOID

+; SetCodeSelector (

+;   UINT16 Selector

+;   );

+;------------------------------------------------------------------------------

+global ASM_PFX(SetCodeSelector)

+ASM_PFX(SetCodeSelector):

+    sub     rsp, 0x10

+    lea     rax, [setCodeSelectorLongJump]

+    mov     [rsp], rax

+    mov     [rsp+4], cx

+    jmp     dword far [rsp]

+setCodeSelectorLongJump:

+    add     rsp, 0x10

+    ret

+

+;------------------------------------------------------------------------------

+; VOID

+; SetDataSelectors (

+;   UINT16 Selector

+;   );

+;------------------------------------------------------------------------------

+global ASM_PFX(SetDataSelectors)

+ASM_PFX(SetDataSelectors):

+o16 mov     ss, cx

+o16 mov     ds, cx

+o16 mov     es, cx

+o16 mov     fs, cx

+o16 mov     gs, cx

+    ret

+