diff options
author | Jeffrey Walton <noloader@gmail.com> | 2017-03-07 12:57:47 -0500 |
---|---|---|
committer | Jeffrey Walton <noloader@gmail.com> | 2017-03-07 12:57:47 -0500 |
commit | d3bcbc71da27e2157b16418a3d0f15b20db577f0 (patch) | |
tree | be880061a0aef70f5fae4e51624e09a4eb2a08ec /rdrand.asm | |
parent | 19df272d906b60b140505930e826a5144bceaabf (diff) | |
download | cryptopp-git-d3bcbc71da27e2157b16418a3d0f15b20db577f0.tar.gz |
Cutover to fastcall for MASM and X86 (Issue 387)
Fix "target specific option mismatch" under GCC 4.6
Diffstat (limited to 'rdrand.asm')
-rw-r--r-- | rdrand.asm | 51 |
1 files changed, 20 insertions, 31 deletions
@@ -28,9 +28,9 @@ PUBLIC MASM_RDSEED_GenerateBlock ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; C/C++ Function prototypes
+;; C/C++ Function prototypes (both are fastcall)
;; X86:
-;; extern "C" void MASM_RDRAND_GenerateBlock(byte* ptr, size_t size);
+;; extern "C" void __fastcall MASM_RDRAND_GenerateBlock(byte* ptr, size_t size);
;; X64:
;; extern "C" void __fastcall MASM_RDRAND_GenerateBlock(byte* ptr, size_t size);
@@ -42,6 +42,9 @@ IFDEF _M_X86 ;; Set via the command line .486
.MODEL FLAT
+ALIAS <@MASM_RDRAND_GenerateBlock@8> = <MASM_RDRAND_GenerateBlock>
+ALIAS <@MASM_RDSEED_GenerateBlock@8> = <MASM_RDSEED_GenerateBlock>
+
ENDIF
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -51,25 +54,19 @@ IFDEF _M_X86 ;; Set via the command line .CODE
ALIGN 8
-OPTION LANGUAGE:C
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
-;; Caller pushes on stack following CDECL (right to left)
-;; arg1: byte* buffer
-;; arg2: size_t bsize
+;; No need for Load_Arguments due to fastcall
+;; ECX (in): arg1, byte* buffer
+;; EDX (in): arg2, size_t bsize
MASM_RDRAND_GenerateBlock PROC ;; arg1:DWORD, arg2:DWORD
MWSIZE EQU 04h ;; machine word size
- buffer EQU edi
+ buffer EQU ecx
bsize EQU edx
-Load_Arguments:
-
- mov buffer, DWORD PTR [esp+04h] ;; arg1
- mov bsize, DWORD PTR [esp+08h] ;; arg2
-
;; Top of While loop
GenerateBlock_Top:
@@ -148,8 +145,9 @@ ALIGN 16 OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
-;; RCX (in): arg1, byte* buffer
-;; RDX (in): arg2, size_t bsize
+;; No need for Load_Arguments due to fastcall
+;; RCX (in): arg1, byte* buffer
+;; RDX (in): arg2, size_t bsize
MASM_RDRAND_GenerateBlock PROC
@@ -157,8 +155,6 @@ MASM_RDRAND_GenerateBlock PROC buffer EQU rcx
bsize EQU rdx
- ;; No need for Load_Arguments due to fastcall
-
;; Top of While loop
GenerateBlock_Top:
@@ -244,25 +240,19 @@ IFDEF _M_X86 ;; Set via the command line .CODE
ALIGN 8
-OPTION LANGUAGE:C
OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
-;; Caller pushes on stack following CDECL (right to left)
-;; arg1: byte* buffer
-;; arg2: size_t bsize
+;; No need for Load_Arguments due to fastcall
+;; ECX (in): arg1, byte* buffer
+;; EDX (in): arg2, size_t bsize
MASM_RDSEED_GenerateBlock PROC ;; arg1:DWORD, arg2:DWORD
MWSIZE EQU 04h ;; machine word size
- buffer EQU edi
+ buffer EQU ecx
bsize EQU edx
-Load_Arguments:
-
- mov buffer, DWORD PTR [esp+04h] ;; arg1
- mov bsize, DWORD PTR [esp+08h] ;; arg2
-
;; Top of While loop
GenerateBlock_Top:
@@ -341,17 +331,16 @@ ALIGN 16 OPTION PROLOGUE:NONE
OPTION EPILOGUE:NONE
-;; RCX (in): arg1, byte* buffer
-;; RDX (in): arg2, size_t bsize
+;; No need for Load_Arguments due to fastcall
+;; RCX (in): arg1, byte* buffer
+;; RDX (in): arg2, size_t bsize
-MASM_RDSEED_GenerateBlock PROC ;; arg1:QWORD,arg2:QWORD
+MASM_RDSEED_GenerateBlock PROC ;; arg1:QWORD, arg2:QWORD
MWSIZE EQU 08h ;; machine word size
buffer EQU rcx
bsize EQU rdx
- ;; No need for Load_Arguments due to fastcall
-
;; Top of While loop
GenerateBlock_Top:
|