summaryrefslogtreecommitdiffstats
path: root/MdePkg/Library/BaseLib/Ia32
diff options
context:
space:
mode:
authorQin Long <qin.long@intel.com>2016-11-04 15:31:28 +0800
committerQin Long <qin.long@intel.com>2016-11-16 16:49:10 +0800
commit9ec9a7a59769927ad1f5662f78a52031cb9cd758 (patch)
treedfddd61598dab02ae9eab4e2545ceec92469530b /MdePkg/Library/BaseLib/Ia32
parentb3775af2775dd0fdf9c0698fb395ed3ffc81b2d3 (diff)
downloadedk2-9ec9a7a59769927ad1f5662f78a52031cb9cd758.tar.gz
edk2-9ec9a7a59769927ad1f5662f78a52031cb9cd758.tar.bz2
edk2-9ec9a7a59769927ad1f5662f78a52031cb9cd758.zip
MdePkg/BaseLib: Add one wrapper on RdRand access for parameter check.
Add one wrapper implementation over assembly RdRand access to check possible NULL parameter, for better alignment with comment description. Cc: Liming Gao <liming.gao@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qin Long <qin.long@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
Diffstat (limited to 'MdePkg/Library/BaseLib/Ia32')
-rw-r--r--MdePkg/Library/BaseLib/Ia32/RdRand.S20
-rw-r--r--MdePkg/Library/BaseLib/Ia32/RdRand.asm20
-rw-r--r--MdePkg/Library/BaseLib/Ia32/RdRand.nasm20
3 files changed, 30 insertions, 30 deletions
diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.S b/MdePkg/Library/BaseLib/Ia32/RdRand.S
index 503f65a721..d00075afe7 100644
--- a/MdePkg/Library/BaseLib/Ia32/RdRand.S
+++ b/MdePkg/Library/BaseLib/Ia32/RdRand.S
@@ -1,5 +1,5 @@
#------------------------------------------------------------------------------ ;
-# Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+# Copyright (c) 2015 - 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
@@ -24,10 +24,10 @@
// Generates a 16 bit random number through RDRAND instruction.
// Return TRUE if Rand generated successfully, or FALSE if not.
//
-// BOOLEAN EFIAPI AsmRdRand16 (UINT16 *Rand);
+// BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand);
//------------------------------------------------------------------------------
-ASM_GLOBAL ASM_PFX(AsmRdRand16)
-ASM_PFX(AsmRdRand16):
+ASM_GLOBAL ASM_PFX(InternalX86RdRand16)
+ASM_PFX(InternalX86RdRand16):
.byte 0x0f, 0xc7, 0xf0 // rdrand r16: "0f c7 /6 ModRM:r/m(w)"
jc rn16_ok // jmp if CF=1
xor %eax, %eax // reg=0 if CF=0
@@ -42,10 +42,10 @@ rn16_ok:
// Generates a 32 bit random number through RDRAND instruction.
// Return TRUE if Rand generated successfully, or FALSE if not.
//
-// BOOLEAN EFIAPI AsmRdRand32 (UINT32 *Rand);
+// BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand);
//------------------------------------------------------------------------------
-ASM_GLOBAL ASM_PFX(AsmRdRand32)
-ASM_PFX(AsmRdRand32):
+ASM_GLOBAL ASM_PFX(InternalX86RdRand32)
+ASM_PFX(InternalX86RdRand32):
.byte 0x0f, 0xc7, 0xf0 // rdrand r32: "0f c7 /6 ModRM:r/m(w)"
jc rn32_ok // jmp if CF=1
xor %eax, %eax // reg=0 if CF=0
@@ -60,10 +60,10 @@ rn32_ok:
// Generates a 64 bit random number through RDRAND instruction.
// Return TRUE if Rand generated successfully, or FALSE if not.
//
-// BOOLEAN EFIAPI AsmRdRand64 (UINT64 *Rand);
+// BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Rand);
//------------------------------------------------------------------------------
-ASM_GLOBAL ASM_PFX(AsmRdRand64)
-ASM_PFX(AsmRdRand64):
+ASM_GLOBAL ASM_PFX(InternalX86RdRand64)
+ASM_PFX(InternalX86RdRand64):
.byte 0x0f, 0xc7, 0xf0 // rdrand r32: "0f c7 /6 ModRM:r/m(w)"
jnc rn64_ret // jmp if CF=0
mov 0x4(%esp), %edx
diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.asm b/MdePkg/Library/BaseLib/Ia32/RdRand.asm
index 21349b0918..cb4e811098 100644
--- a/MdePkg/Library/BaseLib/Ia32/RdRand.asm
+++ b/MdePkg/Library/BaseLib/Ia32/RdRand.asm
@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
-; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 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
@@ -30,9 +30,9 @@
; Generates a 16 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand16 (UINT16 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand);
;------------------------------------------------------------------------------
-AsmRdRand16 PROC
+InternalX86RdRand16 PROC
; rdrand ax ; generate a 16 bit RN into ax
; CF=1 if RN generated ok, otherwise CF=0
db 0fh, 0c7h, 0f0h ; rdrand r16: "0f c7 /6 ModRM:r/m(w)"
@@ -44,15 +44,15 @@ rn16_ok:
mov [edx], ax
mov eax, 1
ret
-AsmRdRand16 ENDP
+InternalX86RdRand16 ENDP
;------------------------------------------------------------------------------
; Generates a 32 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand32 (UINT32 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand);
;------------------------------------------------------------------------------
-AsmRdRand32 PROC
+InternalX86RdRand32 PROC
; rdrand eax ; generate a 32 bit RN into eax
; CF=1 if RN generated ok, otherwise CF=0
db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"
@@ -64,15 +64,15 @@ rn32_ok:
mov [edx], eax
mov eax, 1
ret
-AsmRdRand32 ENDP
+InternalX86RdRand32 ENDP
;------------------------------------------------------------------------------
; Generates a 64 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand64 (UINT64 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Rand);
;------------------------------------------------------------------------------
-AsmRdRand64 PROC
+InternalX86RdRand64 PROC
; rdrand eax ; generate a 32 bit RN into eax
; CF=1 if RN generated ok, otherwise CF=0
db 0fh, 0c7h, 0f0h ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"
@@ -89,6 +89,6 @@ AsmRdRand64 PROC
rn64_ret:
xor eax, eax
ret ; return with failure status
-AsmRdRand64 ENDP
+InternalX86RdRand64 ENDP
END
diff --git a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
index 1365dfcdbb..64e8cdbda4 100644
--- a/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
+++ b/MdePkg/Library/BaseLib/Ia32/RdRand.nasm
@@ -1,6 +1,6 @@
;------------------------------------------------------------------------------
;
-; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
+; Copyright (c) 2015 - 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
@@ -27,10 +27,10 @@ SECTION .text
; Generates a 16 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand16 (UINT16 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand16 (UINT16 *Rand);
;------------------------------------------------------------------------------
-global ASM_PFX(AsmRdRand16)
-ASM_PFX(AsmRdRand16):
+global ASM_PFX(InternalX86RdRand16)
+ASM_PFX(InternalX86RdRand16):
; rdrand ax ; generate a 16 bit RN into ax
; CF=1 if RN generated ok, otherwise CF=0
db 0xf, 0xc7, 0xf0 ; rdrand r16: "0f c7 /6 ModRM:r/m(w)"
@@ -47,10 +47,10 @@ rn16_ok:
; Generates a 32 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand32 (UINT32 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand32 (UINT32 *Rand);
;------------------------------------------------------------------------------
-global ASM_PFX(AsmRdRand32)
-ASM_PFX(AsmRdRand32):
+global ASM_PFX(InternalX86RdRand32)
+ASM_PFX(InternalX86RdRand32):
; rdrand eax ; generate a 32 bit RN into eax
; CF=1 if RN generated ok, otherwise CF=0
db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"
@@ -67,10 +67,10 @@ rn32_ok:
; Generates a 64 bit random number through RDRAND instruction.
; Return TRUE if Rand generated successfully, or FALSE if not.
;
-; BOOLEAN EFIAPI AsmRdRand64 (UINT64 *Rand);
+; BOOLEAN EFIAPI InternalX86RdRand64 (UINT64 *Rand);
;------------------------------------------------------------------------------
-global ASM_PFX(AsmRdRand64)
-ASM_PFX(AsmRdRand64):
+global ASM_PFX(InternalX86RdRand64)
+ASM_PFX(InternalX86RdRand64):
; rdrand eax ; generate a 32 bit RN into eax
; CF=1 if RN generated ok, otherwise CF=0
db 0xf, 0xc7, 0xf0 ; rdrand r32: "0f c7 /6 ModRM:r/m(w)"