Skip to content

Commit e6f1f81

Browse files
committed
Use PROC FRAME and prolog for MASM (GH weidai11#1116)
1 parent 0012277 commit e6f1f81

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

rdrand.asm

+3-1
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,14 @@ OPTION EPILOGUE:NONE
141141
;; RCX (in): arg1, byte* buffer
142142
;; RDX (in): arg2, size_t bsize
143143

144-
MASM_RDRAND_GenerateBlock PROC ;; arg1:QWORD, arg2:QWORD
144+
MASM_RDRAND_GenerateBlock PROC FRAME ;; arg1:QWORD, arg2:QWORD
145145

146146
MWSIZE EQU 08h ;; machine word size
147147
buffer EQU rcx
148148
bsize EQU rdx
149149

150+
.endprolog
151+
150152
;; Top of While loop
151153
RDRAND_GenerateBlock_Top:
152154

rdseed.asm

+3-1
Original file line numberDiff line numberDiff line change
@@ -141,12 +141,14 @@ OPTION EPILOGUE:NONE
141141
;; RCX (in): arg1, byte* buffer
142142
;; RDX (in): arg2, size_t bsize
143143

144-
MASM_RDSEED_GenerateBlock PROC ;; arg1:QWORD, arg2:QWORD
144+
MASM_RDSEED_GenerateBlock PROC FRAME ;; arg1:QWORD, arg2:QWORD
145145

146146
MWSIZE EQU 08h ;; machine word size
147147
buffer EQU rcx
148148
bsize EQU rdx
149149

150+
.endprolog
151+
150152
;; Top of While loop
151153
RDSEED_GenerateBlock_Top:
152154

x64dll.asm

+9-6
Original file line numberDiff line numberDiff line change
@@ -1980,7 +1980,8 @@ SHA256_HashMultipleBlocks_SSE2 ENDP
19801980
;; ctrl = rcx
19811981

19821982
ALIGN 8
1983-
XGETBV64 PROC
1983+
XGETBV64 PROC FRAME
1984+
.endprolog
19841985
;; query
19851986
DB 0fh, 01h, 0d0h
19861987
;; xcr = (EDX << 32) | EAX
@@ -1996,9 +1997,11 @@ XGETBV64 ENDP
19961997
;; output = r8
19971998

19981999
ALIGN 8
1999-
CPUID64 PROC
2000+
CPUID64 PROC FRAME
20002001
;; preserve per ABI
2001-
mov r9, rbx
2002+
mov [rsp+8], rbx
2003+
.savereg rbx, 8
2004+
.endprolog
20022005
;; eax = func
20032006
mov rax, rcx
20042007
;; ecx = subfunc
@@ -2010,10 +2013,10 @@ CPUID64 PROC
20102013
mov [r8+4], ebx
20112014
mov [r8+8], ecx
20122015
mov [r8+12], edx
2013-
;; restore
2014-
mov rbx, r9
2015-
;; return
2016+
;; return value
20162017
mov rax, 1
2018+
;; restore
2019+
mov rbx, [rsp+8]
20172020
ret
20182021
CPUID64 ENDP
20192022

0 commit comments

Comments
 (0)