mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 03:46:38 +00:00
Update some asm macros, partly adding MASM/ML support
svn path=/branches/ros-amd64-bringup/; revision=45328
This commit is contained in:
parent
fde64b37c3
commit
459f389307
1 changed files with 40 additions and 7 deletions
|
@ -8,26 +8,54 @@
|
|||
|
||||
#ifdef _MSC_VER
|
||||
|
||||
#else
|
||||
/* MASM/ML doesn't want explicit [rip] addressing */
|
||||
#define RIP(address) address
|
||||
|
||||
/* Due to MASM's reverse syntax, we are forced to use a precompiler macro */
|
||||
#define MACRO(name, ...) name MACRO __VA_ARGS__
|
||||
|
||||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.PROC MACRO namex
|
||||
namex PROC FRAME
|
||||
ENDM
|
||||
|
||||
/* ... and .ENDP, replacing ENDP */
|
||||
.ENDP MACRO name
|
||||
name ENDP
|
||||
ENDM
|
||||
|
||||
|
||||
#else /***********************************************************************/
|
||||
|
||||
/* Force intel syntax */
|
||||
.intel_syntax noprefix
|
||||
.code64
|
||||
|
||||
/* Macros for x64 stack unwind OPs */
|
||||
/* GAS needs explicit [rip] addressing */
|
||||
#define RIP(address) address##[rip]
|
||||
|
||||
.macro .proc name
|
||||
.func name
|
||||
.global _\name
|
||||
_\name:
|
||||
/* Due to MASM's reverse syntax, we are forced to use a precompiler macro */
|
||||
#define MACRO(name, ...) .MACRO name, __VA_ARGS__
|
||||
|
||||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.macro .PROC name
|
||||
.func \name
|
||||
\name:
|
||||
.cfi_startproc
|
||||
.equ cfa_current_offset, -8
|
||||
.endm
|
||||
|
||||
.macro .endproc
|
||||
/* ... and .ENDP, replacing ENDP */
|
||||
.macro .ENDP
|
||||
.cfi_endproc
|
||||
.endfunc
|
||||
.endm
|
||||
|
||||
/* MASM compatible PUBLIC */
|
||||
#define PUBLIC .global
|
||||
|
||||
/* Macros for x64 stack unwind OPs */
|
||||
|
||||
.macro .allocstack size
|
||||
.cfi_adjust_cfa_offset \size
|
||||
.set cfa_current_offset, cfa_current_offset - \size
|
||||
|
@ -83,4 +111,9 @@
|
|||
.endm
|
||||
#define UNIMPLEMENTED UNIMPLEMENTED2 __FILE__, __LINE__,
|
||||
|
||||
/* MASM/ML uses ".if" for runtime conditionals, and "if" for compile time
|
||||
conditionals. We therefore use "if", too. .if shouldn't be used at all */
|
||||
#define if .if
|
||||
#define endif .endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue